我正在使用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);
}
答案 0 :(得分:2)
我找到了解决方法cakephp 3.x cascade delete not working。
我刚刚将这些代码添加到了UsersTable.php
$this->hasMany(
'post', [
'foreignKey' => 'user_id',
'dependent' => true,
'cascadeCallbacks' => true
]
);