微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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查询来创建带有此类选项的表。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。