mysql - Eloquent删除与MySQL外键级联

标签 mysql laravel eloquent relationship dingo-api

我在 MySQL 数据库中有这些表:

用户['id', '姓名'],

角色['id', 'title'] 和

user_role ['user_id', 'role_id'] 两者都是外键,CASCADE。

<小时/>

当它捕获异常时,用户会根据需要保留在表中,而关系表中的行将被删除。

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.');
}

最佳答案

如果我理解你的问题,交易就是你所需要的。

Database Transactions

DB::transaction(function () {
    $user->delete();
});

如果您遇到僵局,请使用这个

 DB::transaction(function () {
    $user->delete();
},5);

关于mysql - Eloquent删除与MySQL外键级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47055561/

相关文章:

php - Laravel, Dropzone "Trying to get property of non-object"文件上传错误

php - Laravel 5.2 CORS,GET 不使用预检选项

database - LARAVEL 5.5 - 使用 Eloquent 模型将数据从 FORM 插入数据库

php - 在MYSQL中使用WHERE时可以使用多个参数吗

php - 使用 Laravel 4 创建搜索功能

mysql - SQL:如何对表变量添加限制?

mysql - 在 Laravel Eloquent 查询中包含评论

php - 仅比较来自数据库 Timestamp Laravel 的日期

php - 如何在 MySQL 中存储 blob(图像)?

php - php 中的变量与 mysql_result