CakePHP删除不级联导致外键错误

问题描述

| 我有一个名为
custom_carts
的表,并且有一个名为
custom_cart_items
的表。
custom_cart_items
有一个称为
custom_cart_id
的外键,它设置为
custom_cart.id
根据Cake手册,当您调用Model-> delete()时,第一个参数是要删除的条目的ID,第二个参数是是否级联删除相关条目。 因此,当我致电
$this->CustomCart->delete(7,true)
时,会出现此错误:   SQL错误:1451:无法删除或   更新父行:外键   约束失败   (`krake`。`custom_cart_items`,   CONSTRAINT`custom_cart_items_ibfk_1`   外键(`custom_cart_id`)   参考`custom_carts`(`id`)) 这是查询:
DELETE `CustomCart` 
FROM `custom_carts` AS `CustomCart` 
LEFT JOIN `users` AS `User` 
ON (`CustomCart`.`user_id` = `User`.`id`)  
WHERE `CustomCart`.`id` = 25 
它也不应该级联并束缚另一个条目吗? 那我为什么会出错?     

解决方法

        您必须在具有hasmany关系的模型中将相关参数设置为true才能启用级联删除。 您的模型如下所示:
class CustomCart extends AppModel {
         var $name = \'CustomCart\';
         var $hasMany = array(
         \'CustomCartItem\' => array(
             \'dependent\'=> true
         )
);
}
请参阅http://book.cakephp.org/view/82/hasMany     ,        仅将字段添加到表中(无论字段名称如何)都不会告诉CakePHP它们已关联,也不会链接它们以进行级联删除。 您需要在模型中设置关联:请在此处查看详细信息。     ,        另一方面,如果要从表A中删除一条记录,并且有另一个表B作为对表A的FOREIGN KEY约束,则必须在数据库中对表B的该外键设置选项这个 \“ SET NULL ON DELETE \”。 我通常在MySqlWorkbench中执行此操作,但是您也可以使用旧版SQL查询来创建带有此类选项的表。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...