删除函数cakephp3时出错

Error on delete function cakephp3

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

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

我收到一个致命错误:

Unsupported operand types in /vendor/cakephp/cakephp/src/ORM/Table.php on line 1628

如果我运行它没有级联删除的真实参数:

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

由于外键,我得到一个错误:

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (real_estate.customers, CONSTRAINT fk_customer_users10 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE NO ACTION ON UPDATE NO ACTION)

第一个错误已经告诉你哪里出了问题。

Unsupported operand types

很清楚?不? Check the API.

delete( Cake\Datasource\EntityInterface $entity , array|ArrayAccess $options [] )

它只接受一个数组作为第二个参数。

第二个错误是一个普通的 SQL 错误,要么从数据库中删除约束,要么实现它。如果我没看错,除了要删除的实体中的 id 之外,你还必须传递 user_id。

无需为级联删除添加选项,正如 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