Cakephp - HABTM记录不会删除,唯一设置为true

时间:2012-05-07 15:29:26

标签: cakephp cakephp-2.1

CakePHP默认的唯一设置为true,我编码它只是为了确保它。 所以我有以下数据库结构: 项目HABTM操作,唯一设置为true。

情况如下:

删除1个或多个记录时,如果ATLEAST 1记录保持“活着”,则删除时保存正常

删除所有记录(或1条记录,如果这是唯一记录)时,保存时删除不起作用。它只是保留所有现有记录。

我确保在保存之前使用debug($ this-> request-> data),它包含Nothing of Action。

1 个答案:

答案 0 :(得分:4)

从您对帖子的评论中的讨论我仍然感到困惑,但我理解的是您正在尝试: 以类似于以下格式保存POST:     阵列(     'Item'=>阵列(         'id'=> '3'     ) 用:

 $this->Item->SaveAll($this->request->data);

您的POST应包含“操作”键:

array(
    'Item' => array(
        'id' => '3'
    ),
    'Action' => array(
        'Action' => array()
    )

当设置“动作”键时,Cake知道它必须“超过”关系并且它的魔力。 然后它会删除。

我刚刚在我正在开发的应用程序上测试了这个,并且实际上发现它是一个错误。 :D问题 是因为对于特定的HATBM关系,我不得不使用手动生成的表单,因此在没有包含任何内容的情况下发布时,关系密钥未设置且记录未被删除。我认为Form Helper处理这个问题。

如果您遇到类似问题,可以通过两种不同的方式进行管理:

  1. 使用JavaScript隐藏输入

  2. 在Controller中检查是否设置了'Action'键,如果没有设置(作为空数组):

    $ this-> request-> data ['Action'] ['Action'] = array();

    这可能是一种侵扰性,但它会完成这项工作。