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

我正在一个项目中,我正在以这种形式在两个表“用户和注册”中添加数据


 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)

在这种情况下,请帮助我。


侃侃无极
浏览 336回答 2
2回答

牧羊人nacy

$table->integer('user_id')->unsigned();  $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');使用-> onDelete('cascade')对我有用:)

跃然一笑

您无法从用户表中删除记录,因为您与注册表(registrations_user_id_foreign)有关系。为了删除用户记录,您首先必须从注册表中删除该用户的所有记录。您有两种方法:修改您的注册表的关系$table->foreign('user_id')->references ('id')->on('users')->onDelete ('cascade');有了这个,当你做一个$ user-> delete()该用户的记录也会从注册表中删除。或第二种方式:删除注册记录后删除用户$user->registrations()->delete(); $user->delete();
打开App,查看更多内容
随时随地看视频慕课网APP