Php Laravel:如何使用where语句中的值填充刀片选择

Php Laravel:如何使用where语句中的值填充刀片选择,php,laravel,laravel-4,Php,Laravel,Laravel 4,我知道您可以将值发送到如下select语句: $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')) }} 控制器: $client = Client::lists('name',

我知道您可以将值发送到如下select语句:

$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')) }}
控制器:

$client = Client::lists('name', 'id');
return View::make('index', compact('client'));
$client = Client::where('group_id', 1)->pluck('name', 'id');
并在我的视图中这样填充:

视图:

但我如何仅填充来自客户机的记录,例如group_id=1

我试过:

$client = Client::lists('name', 'id')->where('group_id', 1)->get();

但它似乎不是这样工作的,它给了我一个错误“对非对象调用成员函数where()”


关于如何让它工作有什么想法吗?

不确定这是否是一个打字错误,但您没有正确地检索

这条线应该是

    $client = Client::lists('name', 'id')->where('group_id','=', 1)->get();
还有


有时在填充列表时,你会得到模型,传递它们很容易,但有时你会得到数组(fluent、raw等),在这些情况下,你必须手动访问,并用HTML构建表单,因为你必须以不同的方式访问它

我找到了一个适合我的答案:

使用流利而不是雄辩,这看起来像这样:

$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')) }}
然后在您的视图中,只需将其称为刀片形状标记内部,如下所示:

$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,谢谢你的帮助。

最后必须调用lists()

$client = Client::where('group_id','=', 1)->lists('name','id');
这也行

Client::where('group_id','=', 1)->lists('name');
控制器:

$client = Client::lists('name', 'id');
return View::make('index', compact('client'));
$client = Client::where('group_id', 1)->pluck('name', 'id');
视图:

结果:

<select id="client_id" class="form-control" name="client_id">
  <option value="1">John</option>
  <option value="2">Karen</option>
</select>

约翰
凯伦

如果您喜欢使用Laravel的查询生成器(例如出于性能原因):

或者,使用
选择
仅提取所需内容:

$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')) !!}

您好,谢谢您的回答-我在“调用非对象上的成员函数where()”时遇到了一个错误,您知道这是为什么吗?它发出的信号是你上面建议的线路。@kylek如果我有一个id数组,它就不工作了。('group_id','=',$id)此处,$id包含[1,2,3,]。怎么办?直接按名称调用表不是一种坏做法吗?是的,应该在这里使用该模型。另外,
lists()
现在已不推荐使用。Adrian的答案更好。
列表
现在不推荐使用
pluck
lists()
现在不推荐使用。阿德里安的答案更好。