2017-12-19 21 views
0

を更新する私は、ユーザーがチェックボックスで使用可能なすべてのものを表示し、自動そのテーブルの上にあるものをチェックします自分のプロフィールを編集するとき'Officiant_id''awards_id'ミドル表Laravel関係

を保持するテーブルを持っています。

今更新するには、ユーザーが選択を解除する方法、削除するテーブルを更新する方法、または新しいテーブルをチェックして新しいテーブルを追加する方法があります。

@if(!empty($officiant - > useraward)) 
@foreach($officiant - > useraward as $arr) 
@php $removeId[] = $arr - > id @endphp { 
    { 
     Form::checkbox('awards[]', $arr - > id, true, ['class' => '']) 
    } 
} { 
    { 
     $arr - > name 
    } 
} { 
    !!'<br>'!! 
} 
@endforeach 
@endif 

@php 
$offaward = Info::officiantAwards(); 
foreach($removeId as $key) { 
    unset($offaward[$key]); 
} 

@endphp 

@foreach($offaward as $k => $v) { 
    { 
     Form::checkbox('awards[]', $k, false) 
    } 
} { 
    { 
     $v 
    } 
} { 
    !!'<br>'!! 
} 
@endforeach 

if (!empty($request - > awards)) { 
    foreach($request - > awards as $i => $k) { 
     $awards[] = $request - > $k; 
    } 
} 

答えて

0

配列として、すべての賞を取得し、あなたはまた、多対多 関連を構築するための同期方法を使用することができdocumentation /同期させる団体

に.Accordingご$officiantsync()メソッドを呼び出します。 syncメソッドは、 中間テーブルに配置するIDの配列を受け入れます。指定された配列にないIDは、 が中間テーブルから削除されます。この操作が 完了した後そう、唯一の指定された配列内のIDは 中間テーブルに存在しています:

だからあなたの場合にはupdate()またはsave()を呼び出した後、

//get all award ids 
$awards = $request->get('awards'); 

//save or update officient action 

//updating relation 
$officiant->awards()->sync($awards);