【问题标题】:Laravel - Populating Select List with Derived ValuesLaravel - 使用派生值填充选择列表
【发布时间】:2014-01-24 10:55:59
【问题描述】:

我有一个 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 方法填充选择元素,还是需要填充我自己的值/选项文本数组?

【问题讨论】:

    标签: php laravel-4


    【解决方案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 ...
    

    【讨论】:

    • 谢谢。我希望避免这种情况并使用内置列表方法,但感谢您的反馈。
    【解决方案2】:
    Presenter::select('id', DB::raw('CONCAT(first_name, " ", last_name) AS full_name'))->lists('full_name', 'id');
    

    【讨论】:

    • 谢谢 Andreyco,这看起来很有希望。我会试试看它是否有效。
    • 在这里工作就像一个魅力:)
    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    相关资源
    最近更新 更多