[英]cakephp habtm relationship (saving data)
与HABTM相关的问题已经在stackoverflow上发布了很多,但我仍在寻找解决方案。
我正在创建一个应用程序,该应用程序允许基于特定的子类别创建主题。 在添加主题时,系统会要求用户提供标签(以相同的形式)。 现在,当用户单击“添加”按钮完成将标签添加到主题后,主题已成功添加,但标签未添加。
我已经为主题和标签创建了连接表,并将其作为tbl_tags_topics.
(按照cakephp的约定定义),并在主题和标签模型中正确定义了“ hasAndBelongsToMany”数组。
我现在缺少什么步骤?
我还有一个与此相关的问题,但是当我能够将与某个主题相关的标签成功发送到数据库时,我将发布该问题。 (该功能类似于stackoverflow的标签添加和附加的功能)
非常感谢您的帮助。如果您找到HABTM的任何优秀教程,也请让我知道。
谢谢
保存其中一个字段时,您将传递如下参数:
$this->Model->save(
'Model' => array('id' => 1, 'name' => 'one random field)
);
如果具有HABTM标签,则可以执行以下操作:
$this->Model->save(
'Model' => array('id' => 1, 'name' => 'one random field'),
'Tag' => array('Tag' => array(1))
);
但是,此本机功能存在一个问题,那就是每次保存对象时,都需要将每个标签传递给保存的数组。 否则,将它们全部删除,然后再读取。
但是,您可以在面包店上找到一个名为扩展关联的插件。
使用它,您可以:
$this->Model->habtmAdd('Tag', 1, 1);
其中第一个“ 1”是模型的对象标识。 第二个是标签的对象ID。
并删除标签:
$this->Post->habtmDelete('Tag', 1, 1);
在斯托恩维格先生的帮助下,我得以解决我的问题。 这里的链接描述了如何在cakephp中实现此类功能的完整过程。 这是一个很棒的教程,用于学习有关HABTM关系的更多信息。
对于1.3版,我发现此技术很有用。 步骤如下:
在两个模型中都定义了HABTM关系数组之后
这样创建您的表单
echo $form->create('Job');
echo $form->input('title');
echo $form->input('description');
echo $form->input('location');
echo $form->input('Category');//note the caps and single plural
$form->end('Submit');
然后在控制器的add方法中,只需使用
saveAll($ this-> data)
并且联接表也将填充所需的记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.