【问题标题】:Eloquent delete and MySQL foreign key cascadeEloquent 删除和 MySQL 外键级联
【发布时间】:2018-04-13 19:29:29
【问题描述】:

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

【问题讨论】:

    标签: mysql laravel eloquent relationship dingo-api


    【解决方案1】:

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

    Database Transactions

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

    如果您遇到死锁,请使用这个

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

    【讨论】:

    • 是的,成功了。我仍然不得不用try catch包裹它,槽。非常感谢!
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2014-05-07
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多