2016-09-29 8 views
0

私は2つのテーブルを持っています。従業員テーブルとロールテーブル。私のemployee.showブレードでは、すでに割り当てられている、または割り当て可能なロールのドロップダウンリストをレンダリングします。私は集合形式を使用していませんし、すべてのチュートリアルで使用されているのでちょっと固まっています。Laravelは従業員テーブルの関連テーブルのドロップダウンリストを表示します

私のコントローラ

public function show($employee) 
{ 
    $employee = Employees::find($employee); 
    $roles = Roles::pluck('role_name', 'id'); 
return view('employees.show')->withEmployee($employee)->withRoles($roles); 
} 

と私show.blade。質問は、どのようにしてユーザーが更新できるように、他のすべてのロールのDBから完全なリストを取得するのですか?

<div class="form-group"> 
<label class="col-md-4 control-label" for="roles_id">Role</label> 
<div class="col-md-4"> 
<select id="roles_id" name="roles_id" class="form-control"> 
<option value="{{ $employee->roles->id }}">{{ $employee->roles->role_name }}</option> 
</select>    
</div> 
</div> 
+0

を? – Jonathon

+0

はい。@ Jonathon –

答えて

0

あなたのコントローラで行ったことが正しいと思われます。ただし、ビューはロールをループし、それらのオプションを作成する必要があります。あなたがRole::pluck('role_name', 'id')を使用したことを覚えておいてください。'id' => 'role_name'の配列が返されます。

選択した属性を従業員のロールオプションに追加することで、従業員のrole_idと現在比較しているrole_idという3つのステートメントを使用して、選択することができます。

このような何か試してみてください:私はあなたがもしあれば、ユーザの現在の役割を使用してデータベースから利用可能なすべての役割のドロップダウンリストを作成しますが、リストを事前に選択したい考えで正しいのでしょう

<select name="roles_id"> 
    <option value="">Select...</option> 
    @foreach ($roles as $roleId => $roleName) 
     <option value="{{ $roleId }}"{!! $employee->role_id == $roleId ? ' selected' : '' !!}>{{ $roleName }}</option> 
    @endforeach 
</select> 
+0

ありがとうございました。初めての作業。 おそらくあなたがroleIDを持っている場所は、role_idと同じ意味です。私はパターンが一貫して見えるように修正しました。もう一度ありがとうございます。 # –

+0

問題ありません。 '@ foreach'は' $ key => $ value'を持つことができるPHPのforeachステートメントに変換されるので、 '$ roleId'は' pluck'によって返された配列のキーを参照します。 'Role'オブジェクトの' id'を参照してください。 – Jonathon

関連する問題