如何在 cakePHP 3 中使用外键删除值?
How to delete value with foreign key in cakePHP 3?
我正在使用 cakePHP 3。我正在尝试从 table 中删除数据。但是这个数据与另一个 table 作为外键有关系。如果数据 ID 不存在于另一个 table 上,则数据删除成功。但问题是,如果数据 ID 在另一个 table 上可用,则会显示错误。错误类似于 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
users(
id))
。
假设我有 user
table。和 post
table。现在 post
table 有一个名为 user_id
的列。现在,当我尝试删除一个用户时,如果该用户 ID 不作为外键存在于 post
table 中,那么它会毫无错误地删除。
但是,如果用户 ID 出现在 post
table 中并且我尝试删除用户,那么它会显示错误。
这是 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 cascade delete not working。
我刚刚在 UsersTable.php
中添加了这些代码
$this->hasMany(
'post', [
'foreignKey' => 'user_id',
'dependent' => true,
'cascadeCallbacks' => true
]
);
我正在使用 cakePHP 3。我正在尝试从 table 中删除数据。但是这个数据与另一个 table 作为外键有关系。如果数据 ID 不存在于另一个 table 上,则数据删除成功。但问题是,如果数据 ID 在另一个 table 上可用,则会显示错误。错误类似于 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
users(
id))
。
假设我有 user
table。和 post
table。现在 post
table 有一个名为 user_id
的列。现在,当我尝试删除一个用户时,如果该用户 ID 不作为外键存在于 post
table 中,那么它会毫无错误地删除。
但是,如果用户 ID 出现在 post
table 中并且我尝试删除用户,那么它会显示错误。
这是 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 cascade delete not working。
我刚刚在 UsersTable.php
$this->hasMany(
'post', [
'foreignKey' => 'user_id',
'dependent' => true,
'cascadeCallbacks' => true
]
);