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

标签 mysql laravel routes laravel-5.5

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

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

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

现在这是我的问题:

  1. 如果我选中特定复选框,如何删除所选级别。
  2. 在我的表单操作中我应该放置什么路线<form action="#" method="POST" >以便将其指向删除功能。
  3. 我需要在路由器中创建 Route::post 吗?才能执行删除操作

这是我的 Controller :

 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 :

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

最佳答案

您需要`detach_term

中的term id和level id

路线

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

Controller 操作

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/get/2/edit) 中的 Html 表单(确保您已从 Controller 发送了 $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>

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

关于mysql - Laravel 从多对多数据透视表中删除单个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51131193/

相关文章:

ruby-on-rails - 没有成员id的资源路由

php - Laravel 从 ROOT 外部调用/public 文件夹。获取 NotFoundHttpException

Mysql:忽略多个数据库中表的复制

javascript - 使用数据表创建可搜索的图库

php - Laravel 将整数或 float 验证为字符串

ruby-on-rails - Rails 中的 link_to 方法使用什么 Ruby 结构?

php - 如何从 php 和 mysql 向客户端发出递增 key ?

php - 如何从 codeigniter 调用两个或多个表并发送或加载以查看

mysql - 用于解密由 PBEWithMD5AndTripleDES 加密的值的 SQL 查询

unit-testing - Laravel 5.1 中的模拟请求用于(实际)单元测试