Php 如何删除Laravel中的外键约束?
我正在做一个项目,在其中我在两个表中添加数据,用户和注册在一个表单中,如下所示Php 如何删除Laravel中的外键约束?,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我正在做一个项目,在其中我在两个表中添加数据,用户和注册在一个表单中,如下所示 public function storeStudent(Request $request) { $created_user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request
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)
请帮我解决这个问题
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
使用->onDelete'cascade'对我有效:
使用->onDelete'cascade'对我有效:您不能从用户表中删除记录,因为您与注册表registrations\u user\u id\u存在关系。要删除用户记录,首先必须从registrations表中删除该用户的所有记录。你有两种方法: 修改注册表的关系
$table->foreign('user_id')->references ('id')->on('users')->onDelete ('cascade');
有了这个,当你做一个
$user->delete
该用户的记录也将从registrations表中删除
或者第二种方式:
删除注册记录后删除用户
$user->registrations()->delete();
$user->delete();
无法从用户表中删除记录,因为您与注册表registrations\u user\u id\u foreign有关系。要删除用户记录,首先必须从registrations表中删除该用户的所有记录。你有两种方法: 修改注册表的关系
$table->foreign('user_id')->references ('id')->on('users')->onDelete ('cascade');
有了这个,当你做一个
$user->delete
该用户的记录也将从registrations表中删除
或者第二种方式:
删除注册记录后删除用户
$user->registrations()->delete();
$user->delete();
为什么要使用$request->user\u id删除注册?您的用户id和注册id相同吗?因为我想删除该用户id的行,而注册id不同请检查此项-它使用onDelete'cascade'为什么要使用$request->user\u id删除注册?您的用户id和注册id相同吗?因为我想删除该用户id的行,并且注册id不同。请检查此项-它使用onDelete'cascade'