cakephp - 如何在 CakePHP 中将数据写入 HABTM 连接表的 HABTM 关联?

标签 cakephp has-and-belongs-to-many

我正在尝试使用以下结构保存数据:alt text

如您所见,用户体验表之间存在 HABTM 关联。另一个 HABTM 位于 experiences_userstags 之间。我创建了以下表单:

<?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));?>

一切都运转良好。 saveAll 方法创建新体验,将该新体验分配给两个用户(通过experiences_users)并设置相关内容。

令我困扰的是,我想将一些标签分配给新创建的experiences_users记录(第一个记录)。我想,这应该通过一些评论的东西来完成。此注释代码的每一行都会创建表单并将数据发送到 $this->data,但它永远不会被保存。

所以我的问题是:在我的示例中将数据保存到 experiences_users_tags 中的 $this->data$form->input 的正确语法是什么

最佳答案

我明白了。 Cake saveAll 函数仅适用于直接关联的模型。幸运的是 Cake 能够解决这个问题:

查看

echo $form->input('Tags.Tags', array('multiple' => 'multiple', 'options' => $tags));

Controller

$this->Experience->saveAll($data, $parameters);
$this->Experience->ExperiencesUser->save($data);

调用 saveAll() 后,Cake 使用最后插入的 id 填充 $this->data。因此,第二次调用 save() 会将数据保存到正确的表中并设置正确的外键。

关于cakephp - 如何在 CakePHP 中将数据写入 HABTM 连接表的 HABTM 关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962003/

相关文章:

ruby-on-rails - has_and_belongs_to_many 关系的 Rails 路由

ruby-on-rails - rails : How to setup a form with multiple select tags with a HABTM relationship

php - yii javascript 脚本内联

php - CakePHP - 分页中的特殊查询

session - 关闭浏览器时销毁 CakePHP session

node.js - 在 Sequelize 中创建多对多关联的问题。 (属于多)

sql - 具有 HABTM 关系的过滤模型

php - 如何计算两个日期时间之间的小时,分​​钟?

php - 制作基于模块的社交网络cms

ruby-on-rails-3 - 确定是否在 Rails 回调中添加/删除了子项