user7986752
user7986752

Reputation:

Laravel 5.5 Can't remove category after editing

When I edited post I want to remove cancelled categories. I use sync method but its not working..

Edit Blade

<select class="form-control m-select2" id="m_select2_3" name="categories[]" multiple="multiple">
  <optgroup label="Kategoriler">
     @foreach($categories as $category)
        <option value="{{$category->id}}"  {{ in_array($category->id,$categoriesPost) ? 'selected' : '' }}>{{$category->category_name}}
  </option>
     @endforeach
   </optgroup>
 </select>

And Controller

public function update(StoreBlogPost $request, $id){

        $post = Post::find($id);

        $post->title = $request->title;
        $post->caption = $request->caption;
        $post->content = $request->input('content');

        $post->save();
        $post->categories()->sync($request->categories, false);

        return redirect()->route('posts.index');
    }

Any advice ?

Upvotes: 3

Views: 42

Answers (1)

nmfzone
nmfzone

Reputation: 2903

You should set the second parameter of sync to true.

From the code,

/**
 * Sync the intermediate tables with a list of IDs or collection of models.
 *
 * @param  \Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection|array  $ids
 * @param  bool   $detaching
 * @return array
 */
public function sync($ids, $detaching = true)
{
    ....
}

It means, the ids that didn't present in the $ids will be detached.

Upvotes: 1

Related Questions