Laravel 从多对多数据透视表中删除单个数据 table
Laravel remove single data from a many to many pivot table
我正在尝试删除我的 pivot table、 中的单个项目,但我不知道如何让它工作?是否可以?如果我的方法有误请指正。我将在下面展示我自己的方法。
这是获取属于术语 id 的附加级别列表,当您单击“编辑”按钮时,您将转到第二页。
现在显示属于 term_id 的关卡,如果要删除关卡,您可以在此处勾选复选框。
现在这是我的问题:
- 如果选中特定复选框,如何删除所选级别。
- 在我的表单操作中,我应该放置什么路由
<form action="#" method="POST" >
以便将其指向删除功能。
- 我是否需要在我的路由器中创建 Route::post 才能执行删除操作
这是我的控制器:
public function edit_term($id){
$terms = Term::with('level')->where('id','=',$id)->get();
return view('term_level.edit',compact('terms'));}
public function detach_term($id)
{//this is for deleting the data}
这是我的路线:
Route::get('term/get/{id}/edit', 'ListController@edit_term');
Route::post('term/get/{id}/edit', 'ListController@detach_term');
Blade:
<form action="term/get/{id}/deleteLevel/{levelId}" method="POST" >{{ csrf_field() }}
@foreach($terms as $term)
@foreach($term->level as $levels>
<input type="checkbox" name="level_id[]" value="{{ $levels->id }}">
{{ $levels->levelname }}
@endforeach
@endforeach
您需要 term
id 和 level
id in `detach_term
路线
Route::post('term/{id}/deleteLevel', 'ListController@detach_term');
控制器操作
public function detach_term(Request $request, $id)
{
$term = Term::with('level')->find($id);
if($term){
$postData = $request->all();
$term->level()->detach($postData['level_id']);
return redirect('term/get/' . $term->id);
}else{
abort(400, 'Invalid term');
}
}
Html 在 (term/get/2/edit) 中形成(确保您已从控制器发送 $term
以查看)
<form action="/term/{{$term->id}}/deleteLevel" method="POST" >
{{ csrf_field() }}
@foreach($term->level as $levels>
<input type="checkbox" name="level_id[]" value="{{ $levels->id }}">
{{ $levels->levelname }}
@endforeach
<button type="submit">Delete</button>
</form>
检查附加/分离 of https://laravel.com/docs/5.6/eloquent-relationships#many-to-many
我正在尝试删除我的 pivot table、 中的单个项目,但我不知道如何让它工作?是否可以?如果我的方法有误请指正。我将在下面展示我自己的方法。
这是获取属于术语 id 的附加级别列表,当您单击“编辑”按钮时,您将转到第二页。
现在显示属于 term_id 的关卡,如果要删除关卡,您可以在此处勾选复选框。
现在这是我的问题:
- 如果选中特定复选框,如何删除所选级别。
- 在我的表单操作中,我应该放置什么路由
<form action="#" method="POST" >
以便将其指向删除功能。 - 我是否需要在我的路由器中创建 Route::post 才能执行删除操作
这是我的控制器:
public function edit_term($id){
$terms = Term::with('level')->where('id','=',$id)->get();
return view('term_level.edit',compact('terms'));}
public function detach_term($id)
{//this is for deleting the data}
这是我的路线:
Route::get('term/get/{id}/edit', 'ListController@edit_term');
Route::post('term/get/{id}/edit', 'ListController@detach_term');
Blade:
<form action="term/get/{id}/deleteLevel/{levelId}" method="POST" >{{ csrf_field() }}
@foreach($terms as $term)
@foreach($term->level as $levels>
<input type="checkbox" name="level_id[]" value="{{ $levels->id }}">
{{ $levels->levelname }}
@endforeach
@endforeach
您需要 term
id 和 level
id in `detach_term
路线
Route::post('term/{id}/deleteLevel', 'ListController@detach_term');
控制器操作
public function detach_term(Request $request, $id)
{
$term = Term::with('level')->find($id);
if($term){
$postData = $request->all();
$term->level()->detach($postData['level_id']);
return redirect('term/get/' . $term->id);
}else{
abort(400, 'Invalid term');
}
}
Html 在 (term/get/2/edit) 中形成(确保您已从控制器发送 $term
以查看)
<form action="/term/{{$term->id}}/deleteLevel" method="POST" >
{{ csrf_field() }}
@foreach($term->level as $levels>
<input type="checkbox" name="level_id[]" value="{{ $levels->id }}">
{{ $levels->levelname }}
@endforeach
<button type="submit">Delete</button>
</form>
检查附加/分离 of https://laravel.com/docs/5.6/eloquent-relationships#many-to-many