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