无法在CakePhp中使用hasMany更新表上的多个记录

时间:2016-10-18 14:18:21

标签: cakephp cakephp-2.0 cakephp-2.3 cakephp-2.1

我有一个表“Topic”,它与模型中的hasMany链接到“Post”。

我无法弄清楚如何一次更新两个表。

这是我的$ this-> request-> data

Array
(
  [Topic] => Array
      (
          [id] => 1
          [topic_title] => This is my topic
      )

  [Post] => Array
      (
          [1] => Array
              (
                  [id] => 1
                  [title] => Blah
                  [message] => My message
              )

          [2] => Array
              (
                  [id] => 2
                  [title] => Second Blah
                  [message] => Second My message
              )

      )

)

我试过这样做:

$this->Topic->save($this->request->data);

$this->loadmodel('Post');

$this->Post->updateAll($this->request->data, array('Post.topic_id' => $id));

这显然是错误的方法,但我努力寻找一种好方法。

2 个答案:

答案 0 :(得分:0)

您应该使用saveAssociated

$this->Topic->saveAssociated($this->request->data);

答案 1 :(得分:0)

如果使用$this->Topic->save($this->request->data),它只会尝试将[Topic]数组保存在数据数组中。

您可以使用$this->Topic->saveAssociated($this->request->data)$this->Topic->saveAll($this->request->data)将保存应用于数据阵列中的其他阵列。 saveAll()功能涵盖saveAssociated()saveMany()个保存,虽然cakePHP手册建议使用其中任何一个而不是saveAll()功能