CakePHP默认的唯一设置为true,我编码它只是为了确保它。 所以我有以下数据库结构: 项目HABTM操作,唯一设置为true。
情况如下:
删除1个或多个记录时,如果ATLEAST 1记录保持“活着”,则删除时保存正常
删除所有记录(或1条记录,如果这是唯一记录)时,保存时删除不起作用。它只是保留所有现有记录。
我确保在保存之前使用debug($ this-> request-> data),它包含Nothing of Action。
答案 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处理这个问题。
如果您遇到类似问题,可以通过两种不同的方式进行管理:
使用JavaScript隐藏输入
在Controller中检查是否设置了'Action'键,如果没有设置(作为空数组):
$ this-> request-> data ['Action'] ['Action'] = array();
这可能是一种侵扰性,但它会完成这项工作。