删除函数cakephp3出错

时间:2015-06-24 15:28:24

标签: cakephp cakephp-3.0

我有级联删除问题,我使用默认删除功能并添加参数true以允许级联删除,所以如果我运行:

$this->Users->delete($user,true); 

我收到致命错误:

  

不支持的操作数类型   /vendor/cakephp/cakephp/src/ORM/Table.php   在第1628行

如果我在没有用于级联删除的真实参数的情况下运行它:

$this->Users->delete($user); 

由于外键我收到错误:

  

SQLSTATE [23000]:完整性约束违规:1451无法删除或   更新父行:外键约束失败   (real_estatecustomers,CONSTRAINT fk_customer_users10外国   KEY(user_id)REFERENCES usersid)ON DELETE NO ACTION ON ON   更新无行动)

2 个答案:

答案 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