Eloquent 删除和 MySQL 外键级联
Eloquent delete and MySQL foreign key cascade
我在 MySQL 数据库中有这些 table:
用户['id'、'name']、
角色['id'、'title'] 和
user_role ['user_id', 'role_id'] 两者都是外键,CASCADE.
当它捕获到异常时,用户会根据需要保留在 table 中,同时删除关系 table 中的行。
try{
$user->delete();
}
catch (\Exception $e){
throw new \Dingo\Api\Exception\DeleteResourceFailedException('Error.');
}
这是eloquent的错误吗?
现在,我找到了解决此问题的方法,但我不确定这是最佳做法。有更好的方法吗?
try{
$roleId = $user->roles[0]->id;
$user->delete();
}
catch (\Exception $e){
$user->roles()->attach($roleId);
throw new \Dingo\Api\Exception\DeleteResourceFailedException('Error.');
}
如果我理解你的问题,交易就是你所需要的。
DB::transaction(function () {
$user->delete();
});
如果遇到死锁,请使用这个
DB::transaction(function () {
$user->delete();
},5);
我在 MySQL 数据库中有这些 table:
用户['id'、'name']、
角色['id'、'title'] 和
user_role ['user_id', 'role_id'] 两者都是外键,CASCADE.
当它捕获到异常时,用户会根据需要保留在 table 中,同时删除关系 table 中的行。
try{
$user->delete();
}
catch (\Exception $e){
throw new \Dingo\Api\Exception\DeleteResourceFailedException('Error.');
}
这是eloquent的错误吗?
现在,我找到了解决此问题的方法,但我不确定这是最佳做法。有更好的方法吗?
try{
$roleId = $user->roles[0]->id;
$user->delete();
}
catch (\Exception $e){
$user->roles()->attach($roleId);
throw new \Dingo\Api\Exception\DeleteResourceFailedException('Error.');
}
如果我理解你的问题,交易就是你所需要的。
DB::transaction(function () {
$user->delete();
});
如果遇到死锁,请使用这个
DB::transaction(function () {
$user->delete();
},5);