我正在使用cakePHP 3。我正在尝试从表中删除数据。但是此数据与作为外键的另一个表有关系。如果另一个表中不存在数据 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_1FOREIGN KEY (
user_id) REFERENCES
用户(
ID))
。 假设我有user
表。还有post
桌子。现在post
表中有一个名为user_id
的列。现在,当我尝试删除一个用户时,如果该用户 ID 没有作为外键存在于表中post
那么它会删除而不会出错。 但是,如果表中存在用户 IDpost
并且我尝试删除用户,那么它会显示错误。 这是 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);
}
我发现解决方案cakephp 3.x级联删除不起作用。
我刚刚在我的UsersTable.php
中添加了这些代码
$this->hasMany(
'post', [
'foreignKey' => 'user_id',
'dependent' => true,
'cascadeCallbacks' => true
]
);