У меня есть модель Eloquent (докладчики), которая имеет три столбца: id
, first_name
и last_name
. То, что я хочу сделать, – это заполнить опции выбора, чтобы идентификатор был значением и first_name . last_name
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" )) }}
Есть много вопросов, касающихся заполнения входов выбора для моделей в Laravel, хотя я еще не нашел один, который показывает, как заполнять вход выбора, где производное значение должно отображаться в каждом из вариантов, а не только в одном столбце.
Могу ли я использовать метод lists
для заполнения элемента select, или мне нужно будет заполнить свой собственный массив значений / текстов вариантов?
Presenter::select('id', DB::raw('CONCAT(first_name, " ", last_name) AS full_name'))->lists('full_name', 'id');
Вы предоставили ответ, посмотрите ответ PaulDM
Просто приспосабливайте его, надейтесь, что это сработает для вас:
// 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 ...