Semplice sistema di tag in Laravel 5.2

Sto facendo una semplice function di tagging nel mio progetto laravel. Ho creato dei tags tavolo

 id | tag 

inoltre ho items table

 id | title | description 

e la terza tabella item_tag che conterrà l'id item e l'id del tag

Nel mio model Item ho aggiunto questa relazione

 public function tags() { return $this->belongsToMany('App\Tag', 'item_tag'); } 

e la relazione nel model Tag

 public function itemTags() { return $this->belongsToMany('App\Item', 'item_tag'); } 

Il controller di creazione articolo ha create() per la vista e store() per la memorizzazione dell'articolo

 public function create(){ $allTags = Tag::all(); return view('items.create', compact('allTags')); } public function store( ItemRequest $request ){ $item = new Item; $item->title = $request['title']; $item->description = $request['description']; $item->save(); return redirect()->route('items'); } 

Nella selezione dei tag module con più (non sono sicuro se è corretto farlo in questo modo)

 <div class="form-group"> {!! Form::label('tags', 'Tags', arrays('class'=> 'col-sm-2 control-label')) !!} <div class="col-sm-10"> <select name="tags[]" class="form-control select2" id="tags" multiple> @foreach($allTags as $tag) <option value="{!!$tag->id!!}">{!!$tag->tag!!}</option> @endforeach </select> </div> </div> 

La mia domanda è come afferrare e salvare i tag id e item id nella tabella pivot? E poi mostra i tag sulla pagina sull'articolo?

Aggiornare

in dd($item) lo vedo nelle relazioni

  #relations: arrays:3 [▼ "tags" => Collection {#330 ▼ #items: arrays:1 [▼ 0 => Tag {#329 ▼ #table: "tags" #primaryKey: "id" #fillable: arrays:1 [▶] #connection: null #keyType: "int" #perPage: 15 +incrementing: true +timestamps: true #attributes: arrays:10 [▼ "id" => 5 "tag" => "testTag" "title" => null "subtitle" => null "page_image" => null "meta_description" => null "layout" => null "reverse_direction" => null "created_at" => "2017-01-25 06:52:59" "updated_at" => "2017-01-25 06:52:59" ] } ] } ] 

Di solito, si desidera staccare tutti i tag da un elemento e albind solo quelli aggiunti dall'utente nel module. In questo caso, utilizzare il metodo sync() .

Il metodo di sincronizzazione accetta un arrays di ID da inserire nella tabella intermedia. Tutti gli ID che non si trovano nell'arrays specificato verranno rimossi dalla tabella intermedia. Quindi, una volta completata questa operazione, nella tabella intermedia saranno presenti solo gli ID nell'arrays specificato

Per esempio:

 $item = new Item; $item->title = $request['title']; $item->description = $request['description']; $item->save(); // If some tags are new, you should create them here first and get their IDs from a DB. $item->tags()->sync($request->tags);