如何在cakePHP 3中使用外键删除值?

时间:2018-07-10 03:24:06

标签: cakephp cakephp-3.0

我正在使用cakePHP3。我正在尝试从表中删除数据。但是此数据与另一个表有关系作为外键。如果另一个表上没有数据ID,则数据删除成功。但是问题是如果数据ID在另一个表上可用,那么它将显示错误。错误类似于SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails ('project'.'post', CONSTRAINT post_ibfk_1 FOREIGN KEY ( user_id ) REFERENCES用户( id ))。 假设我有user表。还有post表。现在post表中有一个名为user_id的列。现在,当我尝试删除一个用户并且如果该用户ID在表post中作为外键不存在时,那么它将删除而没有任何错误。 但是,如果post表中存在用户ID,而我尝试删除用户,则会显示错误。 这是mt删除按钮代码

 <?php
     echo $this->Html->link(
        __($this->Html->tag('i','', array('class' => 'fa fa-trash text- 
        inverse m-r-10'))),                                              
     ['controller'=>'User', 'action' => 'deleteUser', $user->id],
      ['escape' => false,'data-toggle' => 'tooltip', 'data-original-title' => 'Delete']);?>

这是我的控制器删除功能

public function deleteUser($id)
{
    $user= $this->User->get($id);
    $this->User->delete($user);
}

1 个答案:

答案 0 :(得分:2)

我找到了解决方法cakephp 3.x cascade delete not working

我刚刚将这些代码添加到了UsersTable.php

$this->hasMany(
        'post', [
            'foreignKey' => 'user_id', 
            'dependent'  => true,
            'cascadeCallbacks' => true
        ]
    );