我有一个Eloquent模型(演示者),它有三列:id
,first_name
和last_name
。我想要做的是填充选择选项,以便id是值,first_name . last_name
是显示的内容。
例如,如果我有这些演示者:
id, first_name, last_name
1, Billy, Bob
2, Jose, Cuervo
3, Puff, the Magic Dragon
我想要类似于这个输出:
<select name="presenters">
<option value="1">Billy Bob</option>
<option value="2">Jose Cuervo</option>
<option value="3">Puff the Magic Dragon</option>
</select>
我知道如果我只关心选择列表中的姓氏或名字,我可以这样做:
{{ Form::select("presenters", Presenter::lists("first_name", "id"), Input::old("presenters"), array( "class" => "form-control" )) }}
已经有many questions关于为Laravel中的模型填充选择输入,虽然我还没有找到一个显示如何填充选择输入,其中派生值将显示在每个选项中而不仅仅是一个专栏。
我可以使用lists
方法填充select元素,还是需要填充自己的值/选项文本数组?
答案 0 :(得分:4)
Presenter::select('id', DB::raw('CONCAT(first_name, " ", last_name) AS full_name'))->lists('full_name', 'id');
答案 1 :(得分:1)
您已提供答案,请查看PaulDM reply
只需改编它,希望它适合你:
// your eloquent model ...
public static function listPresenters() {
$ret = [];
foreach (self::all() as $presenter) {
$ret[$presenter->id] = "{$presenter->first_name} {$presenter->last_name}";
}
return $ret;
}
// your eloquent model ...