pic*_*cca 4 cakephp has-and-belongs-to-many
我正在尝试使用以下结构保存数据:
如您所见,用户和体验表之间存在HABTM关联.另外在experience_users和tags之间有一个HABTM .我创建了以下表单:
<?php echo $form->create('Experience', array('action' => 'addClassic'));?>
<?php
echo $form->input('Experience.date', array('dateFormat' => 'DMY'));
echo $form->input('Experience.time', array('timeFormat' => '24', 'empty' => array(-1 => '---'), 'default' => '-1'));
echo $form->input('Experience.name');
echo $form->input('ExperiencesUser.1.note');
echo $form->input('ExperiencesUser.1.rating');
//echo $form->input('Tags.Tags', array('multiple' => 'multiple', 'options' => $tags));
//echo $form->input('ExperiencesUser.1.Tags', array('multiple' => 'multiple', 'options' => $tags));
//echo $form->input('ExperiencesUser.1.Tags.Tags', array('multiple' => 'multiple', 'options' => $tags));
echo $form->input('ExperiencesUser.1.confirmed', array('type' => 'hidden', 'value' => '1'));
echo $form->input('ExperiencesUser.1.user_id', array('type' => 'hidden'));
echo $form->input('ExperiencesUser.2.user_id', array('type' => 'hidden'));
?>
<?php echo $form->end(__('Add', true));?>
Run Code Online (Sandbox Code Playgroud)
一切顺利.saveAll方法创建新体验,为两个用户(通过experience_users)提供这种新体验并设置周围的东西.
困扰我的是我想为新创建的experience_users记录(到第一个)分配一些标签.我想,应该通过一些评论的东西来完成.这个注释代码的每一行都创建表单并将数据发送到$ this-> data,但它永远不会被保存.
所以我的问题是:在我的例子中将$ this-> data或$ form->输入的正确语法保存为experience_users_tags是什么?
我想到了.Cake saveAll函数仅适用于直接关联的模型.幸运的是,Cake可以照顾到这个:
echo $form->input('Tags.Tags', array('multiple' => 'multiple', 'options' => $tags));
Run Code Online (Sandbox Code Playgroud)
$this->Experience->saveAll($data, $parameters);
$this->Experience->ExperiencesUser->save($data);
Run Code Online (Sandbox Code Playgroud)
调用saveAll()之后的Cake 用最后插入的id 填充$ this-> data.所以第二次调用save()会将数据保存到右表并正确设置外键.
| 归档时间: |
|
| 查看次数: |
2922 次 |
| 最近记录: |