【问题标题】:Error on delete function cakephp3删除功能 cakephp3 出错
【发布时间】:2015-09-10 21:39:57
【问题描述】:

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

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

我收到一个致命错误:

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

如果我在没有 true 参数的情况下运行它以进行级联删除:

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

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

SQLSTATE[23000]:违反完整性约束:1451 无法删除或 更新父行:外键约束失败 (real_estate.customers, 约束fk_customer_users10 外国 KEY (user_id) 参考 users (id) ON 删除 无操作 ON 更新无操作)

【问题讨论】:

标签: cakephp cakephp-3.0


【解决方案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

【讨论】:

    【解决方案2】:

    第一个错误已经告诉你出了什么问题。

    不支持的操作数类型

    很清楚?不? Check the API.

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2011-08-23
      相关资源
      最近更新 更多