Laravel - 使用派生值填充选择列表

时间:2014-01-06 22:01:31

标签: php laravel-4

我有一个Eloquent模型(演示者),它有三列:idfirst_namelast_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元素,还是需要填充自己的值/选项文本数组?

2 个答案:

答案 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 ...