cakephp habtm relationship(保存数据)

Gau*_*rma 3 php cakephp relationship has-and-belongs-to-many

有关HABTM的问题已在stackoverflow上发布了一些好的数字,但我仍然在寻找解决我的问题的方法.

我正在创建一个允许基于特定子类别创建主题的应用程序.在添加主题时,会要求用户提供标签(在同一表单上).现在,当用户在单击"添加"按钮时完成向主题添加标签后,主题已成功添加,但标签不是.

我已经为主题和标签创建了连接表tbl_tags_topics.(如cakephp的约定中所定义),并在主题和标签的模型中正确定义了'hasAndBelongsToMany'数组.

我现在缺少哪些步骤.

我还有一个与此相关的问题,但是当我能够将与主题相关的标签成功发送到数据库时,我会发布它.(该功能类似于stackoverflow的标签添加和附加功能)

非常感谢任何帮助.如果您找到HABTM,也请告诉我任何有关HABTM的好教程.

谢谢

Dam*_*IEU 5

保存其中一个字段时,您传递的参数如下:

$this->Model->save(
    'Model' => array('id' => 1, 'name' => 'one random field)
);
Run Code Online (Sandbox Code Playgroud)

如果您有标签,即HABTM,您可以执行以下操作:

$this->Model->save(
    'Model' => array('id' => 1, 'name' => 'one random field'),
    'Tag' => array('Tag' => array(1))
);
Run Code Online (Sandbox Code Playgroud)

但是这个原生功能存在问题,每次保存对象时,都需要将每个标签传递给已保存的数组.否则,它们都将在被读取之前被删除.

但是你可以在面包店找到一个名为扩展关联的插件.

使用它,你会做:

$this->Model->habtmAdd('Tag', 1, 1);
Run Code Online (Sandbox Code Playgroud)

第一个"1"是模型的对象id.第二个是标签的对象ID.

并删除标签:

$this->Post->habtmDelete('Tag', 1, 1); 
Run Code Online (Sandbox Code Playgroud)