CakePHP 的默认设置为 true,我已经对其进行了编码以确保也是如此。所以我有以下数据库结构:Item HABTM Action,唯一设置为true。
情况如下:
如果 ATLEAST 1 条记录保持“活动”状态,当我删除 1 条或多条记录时,保存时删除工作正常
当我删除所有记录(或 1 条记录,如果这是唯一的一条)时,删除在保存时不起作用。它只是以这种方式保存所有现有记录。
在保存之前,我已经确定 debug($this->request->data) 不包含任何操作。
CakePHP 的默认设置为 true,我已经对其进行了编码以确保也是如此。所以我有以下数据库结构:Item HABTM Action,唯一设置为true。
情况如下:
如果 ATLEAST 1 条记录保持“活动”状态,当我删除 1 条或多条记录时,保存时删除工作正常
当我删除所有记录(或 1 条记录,如果这是唯一的一条)时,删除在保存时不起作用。它只是以这种方式保存所有现有记录。
在保存之前,我已经确定 debug($this->request->data) 不包含任何操作。
从您帖子评论中的讨论中,我仍然感到困惑,但我了解您正在尝试: 以类似于以下格式保存 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 关系,我必须使用手动生成的表单,因此在发布时没有包含任何内容,关系键没有设置,记录也没有被删除。我想表单助手处理这个。
如果您有类似的问题,您可以通过两种不同的方式进行管理:
使用 JavaScript 放置隐藏输入
在控制器中检查是否设置了“操作”键,如果没有添加它(作为一个空数组):
$this->request->data['Action']['Action'] = array();
这可能有点侵入性,但它会完成这项工作。