2

CakePHP 的默认设置为 true,我已经对其进行了编码以确保也是如此。所以我有以下数据库结构:Item HABTM Action,唯一设置为true。

情况如下:

如果 ATLEAST 1 条记录保持“活动”状态,当我删除 1 条或多条记录时,保存时删除工作正常

当我删除所有记录(或 1 条记录,如果这是唯一的一条)时,删除在保存时不起作用。它只是以这种方式保存所有现有记录。

在保存之前,我已经确定 debug($this->request->data) 不包含任何操作。

4

1 回答 1

4

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

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

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

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

当“Action”键被设置时,Cake 知道它必须“超越”这个关系并且它很神奇。然后它会删除。

我刚刚在我正在开发的应用程序上对此进行了测试,实际上发现它是一个错误。:D 问题是对于特定的 HATBM 关系,我必须使用手动生成的表单,因此在发布时没有包含任何内容,关系键没有设置,记录也没有被删除。我想表单助手处理这个。

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

  1. 使用 JavaScript 放置隐藏输入

  2. 在控制器中检查是否设置了“操作”键,如果没有添加它(作为一个空数组):

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

    这可能有点侵入性,但它会完成这项工作。

于 2012-05-09T07:48:05.883 回答