Laravel удаляет отдельные данные из сводной таблицы много-много - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь удалить один элемент в моей сводной таблице, , и я не знаю, как заставить его работать? Является ли это возможным? если мой метод неверен, пожалуйста, поправьте меня. ниже я покажу свой собственный подход.

Получается список прикрепленных уровней, принадлежащих термину 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 голосов
/ 02 июля 2018

Вам нужно term идентификатор и level идентификатор в `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>

Проверка Присоединение / отсоединение из https://laravel.com/docs/5.6/eloquent-relationships#many-to-many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...