使用CakePHP以相同的形式更新/添加/删除多个记录的最佳方法是什么

时间:2016-10-18 15:49:53

标签: 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->saveAssociated($this->request->data);

但是,如果我也希望能够添加和删除此主题的帖子,我该怎么办?

2 个答案:

答案 0 :(得分:1)

保持相同的结构,你可以做_pad_nans,它会在数据数组中添加任何新的($this->Topic->saveAssociated($this->request->data);或未设置的)项目。

关于删除,我知道的唯一一个同时删除的情况是HABTM标记为'id' => NULL时。否则,您需要执行'unique' => true

我可以考虑创建一个新数组来保存你想要删除的数组并将它们作为deleteAll函数的条件发送。

答案 1 :(得分:0)

来自CakePHP 2 Book

delete(integer $id = null, boolean $cascade = true);
  

删除$ id标识的记录。默认情况下,还会删除记录   取决于指定要删除的记录。

     

例如,删除与许多Recipe绑定的用户记录时   记录(用户'hasMany'或'hasAndBelongsToMany'食谱):

     
      
  • 如果$ cascade设置为true,如果模型的dependent-value设置为true,也会删除相关的Recipe记录。
  •   
  • 如果$ cascade设置为false,则在删除用户后,配方记录将保留。
  •   

<强> http://book.cakephp.org/2.0/en/models/deleting-data.html