我知道您可以将值发送到这样的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()在非对象上”
关于如何使其发挥作用的任何想法?
答案 0 :(得分:10)
控制器:
$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>
答案 1 :(得分:9)
必须最后调用lists()
$client = Client::where('group_id','=', 1)->lists('name','id');
答案 2 :(得分:8)
我找到了一个对我有用的答案:
使用流利而不是雄辩,这看起来像这样:
$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,谢谢你试图提供帮助。
答案 3 :(得分:6)
这也会起作用
Client::where('group_id','=', 1)->lists('name');
答案 4 :(得分:1)
不确定这是否是拼写错误,但您没有正确检索,
这一行应该是......
$client = Client::lists('name', 'id')->where('group_id','=', 1)->get();
另外....
有时在填充列表时,你会获得模型,并且很容易传递它们,但有时你会得到数组(流畅,原始等),在这种情况下你必须手动访问,并用HTML构建表单,因为你必须以不同方式访问它。
答案 5 :(得分:0)
如果您更喜欢使用Laravel的查询生成器(例如出于性能原因):
$clients = DB::table('clients')->get()->pluck('name', 'id')->toArray();
return view('index', compact('clients'));
或者用select
仅拉出所需的内容:
$clients = DB::table('clients')->select('name', 'id')->get()->pluck('name', 'id')->toArray();
return view('index', compact('clients'));
您认为:
{!! Form::label('client_id', 'Client') !!}
{!! Form::select('client_id', $clients, old('client_id')) !!}