为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Laravel中删除外键约束?

如何在Laravel中删除外键约束?

PHP
侃侃无极 2021-04-08 18:15:12
我正在一个项目中,我正在以这种形式在两个表“用户和注册”中添加数据 public function storeStudent(Request $request){       $created_user = User::create([        'name' => $request->name,        'email' => $request->email,        'password' => bcrypt($request->password),        'parent_id' => $request->parent_id,        'role_id' => $request->role_id,        'gender'=> $request->gender,        'date_of_birth'=> $request->date_of_birth,        'cnic'=>$request->cnic,        'religion'=>$request->religion,        'skills'=>$request->skills,        'physical'=>$request->physical,        'emergency_name'=>$request->emergency_name,        'phone_no'=>$request->phone_no,        'medical_info'=>$request->medical_info,        'family_dr'=>$request->family_dr,        'address'=>$request->address,    ]);    Registration::create([       //reg_id is id for registration table        'user_id' => $created_user->id,        'class_id' => $request->class_id,        'section_id' => $request->section_id,    ]);现在,我想删除语法不好的数据。我不知道该怎么做才能删除正在尝试的数据public function destroy(Request $request){    $user = User::findOrFail($request->user_id);    $user->delete();    $registration=Registration::findOrFail($request->user_id);    $registration->delete();    return back();}现“注册表”为Schema::create('registrations', function (Blueprint $table) {    $table->increments('reg_id');    $table->integer('user_id')->unsigned();    $table->foreign('user_id')->references('id')->on('users');    $table->integer('class_id')->unsigned();    $table->foreign('class_id')->references('id')->on('classses');    $table->integer('section_id')->unsigned();    $table->foreign('section_id')->references('id')->on('sections');    $table->timestamps();});但这给我错误 Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`jurs1`.`registrations`, CONSTRAINT `registrations_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) (SQL: delete from `users` where `id` = 10)在这种情况下,请帮助我。
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

$table->integer('user_id')->unsigned();
 $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

使用-> onDelete('cascade')对我有用:)


查看完整回答
反对 回复 2021-04-23
?
跃然一笑

TA贡献1826条经验 获得超6个赞

您无法从用户表中删除记录,因为您与注册表(registrations_user_id_foreign)有关系。为了删除用户记录,您首先必须从注册表中删除该用户的所有记录。您有两种方法:

修改您的注册表的关系

$table->foreign('user_id')->references ('id')->on('users')->onDelete ('cascade');

有了这个,当你做一个

$ user-> delete()

该用户的记录也会从注册表中删除。

或第二种方式:

删除注册记录后删除用户

$user->registrations()->delete();
$user->delete();


查看完整回答
反对 回复 2021-04-23
  • 2 回答
  • 0 关注
  • 332 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信