我有级联删除问题,我使用默认删除功能并添加参数true以允许级联删除,所以如果我运行:
$this->Users->delete($user,true);
我收到致命错误:
不支持的操作数类型 /vendor/cakephp/cakephp/src/ORM/Table.php 在第1628行
如果我在没有用于级联删除的真实参数的情况下运行它:
$this->Users->delete($user);
由于外键我收到错误:
SQLSTATE [23000]:完整性约束违规:1451无法删除或 更新父行:外键约束失败 (
real_estate
。customers
,CONSTRAINTfk_customer_users10
外国 KEY(user_id
)REFERENCESusers
(id
)ON DELETE NO ACTION ON ON 更新无行动)
答案 0 :(得分:1)
第一个错误已经告诉你出了什么问题。
不支持的操作数类型
很清楚?没有? Check the API
delete( Cake\Datasource\EntityInterface $entity , array|ArrayAccess $options [] )
它只接受一个数组作为第二个arg。
第二个错误是一个简单的SQL错误,要么从数据库中删除约束,要么实现它。如果我读了这个权利,你必须传递user_id,除了你传递给删除的实体中的id。
答案 1 :(得分:1)
没有必要为级联删除添加选项,并且正如burzum所说,您将字符串作为数组传递。
删除实体时,也可以删除关联数据。如果您的HasOne和HasMany关联配置为依赖关系,则删除操作也将“级联”到这些实体
// In a Table's initialize method.
$this->hasMany('Comments', [
'dependent' => true,
]);
http://book.cakephp.org/3.0/en/orm/deleting-data.html#cascading-deletes