10

我了解您可以将值发送到这样的选择语句:

控制器:

$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()”

关于如何使其工作的任何想法?

4

6 回答 6

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>
于 2016-03-26T02:03:56.293 回答
9

list() 必须最后被调用

$client = Client::where('group_id','=', 1)->lists('name','id');
于 2013-07-29T05:52:22.273 回答
8

我找到了一个对我有用的答案:

使用 fluent 而不是 eloquent,看起来像这样:

$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,感谢您提供帮助。

于 2013-07-29T05:46:09.867 回答
6

这也可以

Client::where('group_id','=', 1)->lists('name');
于 2014-02-03T15:28:26.920 回答
1

不确定这是否是拼写错误,但您没有正确检索,

这条线应该...

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

还....

有时在填充列表时,您会得到模型,并且很容易传递它们,但有时您会得到数组(流利的、原始的等),在这些情况下,您必须手动访问,并使用 HTML 构建表单,因为您必须访问它不同。

于 2013-07-28T23:18:26.153 回答
0

如果你更喜欢使用 Laravel 的查询构建器(例如出于性能原因):

$clients = DB::table('clients')->get()->pluck('name', 'id')->toArray();
return view('index', compact('clients'));

或者,使用 aselect仅拉取所需的内容:

$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')) !!}
于 2018-11-01T01:37:44.027 回答