Я понимаю, что вы можете отправлять значения в оператор select следующим образом:
контроллер:
$client = Client::lists('name', 'id'); return View::make('index', compact('client'));
И заполнить это на мой взгляд так:
Посмотреть:
{{ Form::select('client_id', $client, Input::old('client_id')) }}
Но как я могу заполнить только записи от клиентов, где group_id = 1, например.
Я пытался:
$client = Client::lists('name', 'id')->where('group_id', 1)->get();
а также
$client = Client::lists('name', 'id')->where('group_id','=', 1)->get();
Но похоже, что это не работает, и дает мне ошибку «Вызов функции-члена where () для не-объекта»
Любые идеи о том, как заставить его работать?
Списки () должны быть вызваны наконец
$client = Client::where('group_id','=', 1)->lists('name','id');
Я нашел ответ, который сработал для меня:
Используйте свободно, а не красноречивый, который будет выглядеть примерно так:
$client = DB::table('clients')->where('group_id', 1)->lists('name'); return View::make('index', compact('client'));
Затем, на ваш взгляд, просто назовите это внутри тегов формы блогов таким образом:
{{ Form::select('client_id', $client, Input::old('client_id')) }}
@KyleK, спасибо за помощь.
контроллер:
$client = Client::where('group_id', 1)->pluck('name', 'id');
Посмотреть:
{!! Form::select('client_id', $client, Input::old('client_id'), ['class'=> 'form-control']) !!}
Результат:
<select id="client_id" class="form-control" name="client_id"> <option value="1">John</option> <option value="2">Karen</option> </select>
Это тоже сработает
Client::where('group_id','=', 1)->lists('name');
Не уверен, что это опечатка или нет, но вы не правильно разбираетесь,
Эта строка должна быть …
$client = Client::lists('name', 'id')->where('group_id','=', 1)->get();
Также….
Иногда, когда вы заполняете списки, вы получаете модели, и их легко их пропускать, но иногда вы получаете массивы (беглые, необработанные и т. Д.), И в этих случаях вам нужно получить доступ вручную и создать форму с помощью HTML, потому что вам нужно получить доступ это по-другому.