问题描述
我想使用 illuminate \ html 创建一个如下所示的选择框:
I want to create a select box like the one below using illuminate\html :
<select>
<option value="$item->id">$item->name</option>
<option value="$item->id">$item->name</option>
</select>
在我的控制器中,我尝试了以下操作:
In my controller I tried this:
public function create()
{
$items = Items::all(['id', 'name']);
return view('prices.create', compact('id', 'items'));
}
在我看来,这是
<div class="form-group">
{!! Form::Label('item', 'Item:') !!}
{!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!}
</div>
问题在于,不是显示$item->name
而是显示实体的所有信息.
The issue is that instead of $item->name
is displaying all the info of the entity.
推荐答案
Laravel为查询生成器提供了list()函数
Laravel provides a Query Builder with lists() function
根据您的情况,您可以替换代码
In your case, you can replace your code
$items = Items::all(['id', 'name']);
使用
$items = Items::lists('name', 'id');
此外,您也可以将其与其他查询生成器链接起来.
Also, you can chain it with other Query Builder as well.
$items = Items::where('active', true)->orderBy('name')->lists('name', 'id');
来源: http://laravel.com/docs/5.0/queries#selects
Laravel 5.2的更新
非常感谢@jarry.如您所述,Laravel 5.2的功能应为
Thank you very much @jarry. As you mentioned, the function for Laravel 5.2 should be
$items = Items::pluck('name', 'id');
或
$items = Items::where('active', true)->orderBy('name')->pluck('name', 'id');
ref: https://laravel.com/docs/5.2/upgrade# upgrade-5.2.0 -查看弃用列表"
ref: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0 -- look at Deprecations lists
这篇关于Laravel-5如何使用ID值和名称值填充数据库中的选择框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!