Laravel从多对多数据透视表中删除单个数据

时间:2018-07-02 07:38:03

标签: mysql laravel routing laravel-5.5

我正在尝试删除我的数据透视表中的单个项目,我不知道如何使它工作?可能吗?如果我的方法错误,请纠正我。我将在下面展示我自己的方法。

这将获得属于术语ID的附加级别列表,并且当您单击“编辑”按钮时,您将转到第二页。 enter image description here

现在显示属于term_id的级别,如果要删除级别,可以在此处选中复选框。 enter image description here

现在这是我的问题:

  1. 如果我选中特定的复选框,如何删除所选级别。
  2. 在表单操作中,我应该放置<form action="#" method="POST" >的路径以将其指向删除功能。
  3. 我需要在路由器中创建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');

刀片:

enter image description here

<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

1 个答案:

答案 0 :(得分:1)

在“ detach_term”中需要 $('.options').change(function () { var value = $(this).val(); var data = "options"+value; $.ajax({ type: 'POST', url: php-file.php, // File where i got my php code data: data, success: function (result) { $('#content').html(result); } }); }); ID和term ID

路线

level

控制器操作

Route::post('term/{id}/deleteLevel', 'ListController@detach_term');

(term / get / 2 / edit)中的HTML格式(请确保您已从控制器发送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'); } } 进行查看)

$term

检查附加/分离 https://laravel.com/docs/5.6/eloquent-relationships#many-to-many