2017-04-18 7 views
0

データベーステーブルには、first_nameとlast_nameの2つのフィールドがあります。 私は私がこのコードを使用することができますドロップダウンボックスいっぱいにしたい場合:ドロップダウンリストを作成するブレードテンプレートのSelectRaw

{!! Form::select('driver_id', App\Driver::pluck('first_name','id'), null, ['class' => 'form-control']) !!} 

しかし、私は2つのfileds CONCATたい場合、私は私のモデルにSelectRowを使用する必要があります。

{!! Form::select('driver_id', App\Driver::select(DB::raw("CONCAT(first_name,' ', last_name) AS full_name, id"))->pluck('full_name','id'), null, ['class' => 'form-control']) !!} 

をしかし、この解決策はしていません作品とこれは私が得るものです:

....選択が出願された「FULL_NAME」を取得するが、「ID」フィールドを取得していないです
<select class="form-control" name="driver_id"> 
<option value="">Autista...</option> 
<option value="11"> </option> 
<option value="12"> </option> 
<option value="13"> </option> 
..... 
</select> 

。 解決方法

+0

コントローラに連結配列を作成し、それをビューブレードの選択タグに渡すことができます。 –

+0

確かに。しかし、どのようにこのエレガントなソリューションを動作させるには? – Polarix

+0

解決策を質問自体の中ではなく、自分の質問への回答として投稿してください。ありがとう。 –

答えて

0

私はあなたがこれを試すことができると思います。

{{ Form::select('driver_id', App\Driver::select(DB::raw("CONCAT(first_name,' ', last_name) AS full_name, id"))->lists('full_name','id'), null, ['class' => 'form-control']) }} 

はあなたのためにこの作品を願っています!

+0

lists機能はlaravel 5.3のバージョンからは利用できません。 –

+0

ありがとうございます。しかし、コレクションメソッド - > lists()は推奨されません。 >コレクション、クエリビルダー、およびEloquentクエリビルダーオブジェクトのlistsメソッドは、pluckに名前が変更されました。メソッドのシグネチャは同じです。 – Polarix

0

ブレード・ファイルでこれを試してみてください。

App\Driver::select(
     DB::raw("CONCAT(first_name,' ',last_name) AS full_name"),'id') 
     ->pluck('full_name', 'id'); 
+0

私は上記のコードを編集しました.... –

+0

@Polarix:上記のコードはあなたのケースで機能しましたか? –

+0

いいえ、問題は**エイリアスフィールド名**です。抜き取り機能がフィールド "full_name"を見つけることができません。 詳細については、[laravel camel_case()](https://laravel.com/docs/5.4/helpers#method-camel-case)も参照してください。 – Polarix

0

SOLUTION

問題はがエイリアスフィールド名 "FULL_NAME" で文字をアンダースコアです。

このコードは正常に動作します:

App\Driver::selectRaw("CONCAT(first_name,' ',last_name) as fullname ,id")->pluck("fullname", "id") 

みんなありがとうを。

+0

OK良い...ありがとう –

関連する問題