2014-01-06 2 views
0

У меня есть модель Eloquent (докладчики), которая имеет три столбца: id, first_name и last_name. То, что я хочу сделать, это заполнить параметры выбора, чтобы идентификатор был значением, а first_name . last_name - это то, что отображается.Laravel - Population Select List с производными значениями

Например, если у меня были такие ведущие:

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, или мне нужно заполнить свой собственный массив значений/текстов вариантов?

ответ

4
Presenter::select('id', DB::raw('CONCAT(first_name, " ", last_name) AS full_name'))->lists('full_name', 'id'); 
+0

Спасибо Андрею, это выглядит многообещающе. Я попробую это и посмотрю, работает ли оно. –

+0

Работает как очарование здесь :) – Andreyco

+0

работает как шарм здесь тоже. Еще раз спасибо –

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 ... 
+0

Спасибо. Я надеюсь избежать этого и использовать метод встроенных списков, но спасибо за отзывы. –

Смежные вопросы