防止Laravel上的级联删除

时间:2017-08-26 21:26:48

标签: php laravel

我已经在我的数据库中为一个值添加了一个外键,所以当你尝试删除具有该值的用户时,它不会允许你删除它,但是,我无法弄清楚如何通过刀片模板来管理它,我得到了laravel错误:

(2/2)QueryException SQLSTATE [23000]:完整性约束违规:1451无法删除或更新父行:外键约束失败

所以,我得到了这个,但不起作用:

if ($user->delete()) {
                    $request->session()->flash('success', 'User Deleted.');
                    return redirect()->route('admin/user.getall');
                }  else {
                    $request->session()->flash('danger', 'Unable to delete user with Value.');
                        return redirect()->route('admin/user.getall');
                }

在这种情况下我能做什么?,我不想删除密钥,或者我不想在严格的数据库中更改为false,我接着是真的,我需要这个,还有其他方式吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

你可以做一些例外的handelling

try{
  $user->delete();
}
catch (\Illuminate\Database\QueryException $e){
      $request->session()->flash('danger', 'Unable to delete user with Value.');
      return redirect()->route('admin/user.getall');
    }

答案 1 :(得分:-1)

外键的重点是,只要有数据链接到数据库(通过外键),就无法从数据库中删除数据。因此,在删除用户之前,首先必须删除链接到该用户的所有数据。

请查看Eloquent relationships我相信Laravel可以为您分配比您目前使用更多的东西!还有tutorial