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

Jos*_*osh 10 php laravel laravel-4

我知道你可以将值发送到这样的select语句:

控制器:

$client = Client::lists('name', 'id');
return View::make('index', compact('client'));
Run Code Online (Sandbox Code Playgroud)

并在我的视图中填充这样:

视图:

{{ Form::select('client_id', $client, Input::old('client_id')) }}
Run Code Online (Sandbox Code Playgroud)

但是,如何仅填充group_id = 1的客户端中的记录.

我试过了:

$client = Client::lists('name', 'id')->where('group_id', 1)->get();
Run Code Online (Sandbox Code Playgroud)

$client = Client::lists('name', 'id')->where('group_id','=', 1)->get();
Run Code Online (Sandbox Code Playgroud)

但它似乎没有那样工作,并给我错误"调用成员函数where()在非对象上"

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

Adr*_*nez 10

控制器:

$client = Client::where('group_id', 1)->pluck('name', 'id');
Run Code Online (Sandbox Code Playgroud)

视图:

{!! Form::select('client_id', $client, Input::old('client_id'), ['class'=> 'form-control'])  !!}
Run Code Online (Sandbox Code Playgroud)

结果:

<select id="client_id" class="form-control" name="client_id">
  <option value="1">John</option>
  <option value="2">Karen</option>
</select>
Run Code Online (Sandbox Code Playgroud)

  • `lists`现已弃用,请使用`pluck` (3认同)

Lok*_*ana 9

必须最后调用lists()

$client = Client::where('group_id','=', 1)->lists('name','id');
Run Code Online (Sandbox Code Playgroud)


Jos*_*osh 8

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

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

$client = DB::table('clients')->where('group_id', 1)->lists('name');
return View::make('index', compact('client'));
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中,只需在刀片表单标签中调用它,如下所示:

{{ Form::select('client_id', $client, Input::old('client_id')) }}
Run Code Online (Sandbox Code Playgroud)

@KyleK,谢谢你试图帮忙.


小智 6

这也会奏效

Client::where('group_id','=', 1)->lists('name');
Run Code Online (Sandbox Code Playgroud)