【问题标题】:Laravel remove single data from a many to many pivot tableLaravel 从多对多数据透视表中删除单个数据
【发布时间】:2018-07-02 07:38:02
【问题描述】:

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

这是获取属于术语 id 的附加级别列表,当您单击编辑按钮时,您将转到第二页..

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

现在这是我的问题:

  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');

刀片:

<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

【问题讨论】:

    标签: mysql laravel routing laravel-5.5


    【解决方案1】:

    你需要term id 和level id 在`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');
       }
    
    }
    

    (term/get/2/edit) 中的 HTML 表单(确保您已从控制器发送 $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附加/分离

    【讨论】:

    • 添加有问题的 html 表单代码。然后我会相应地更改它,有不同的方式将数据从form 发送到controller。我需要看看你的 html 代码
    • 为什么要添加为图像,您应该将其添加为文本,以便我可以在其中复制和修改。请添加文本并删除图像
    • 哎呀抱歉等等
    • @Grace 我已经更新了所有路由、控制器操作部分并添加了表单检查它然后尝试
    猜你喜欢
    • 2015-02-11
    • 2017-04-11
    • 2015-02-04
    • 2020-07-03
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多