Laravel-5如何使用id值和名称值从数据库填充select框
我想使用illuminate \ html来创build一个如下所示的select框:
<select> <option value="$item->id">$item->name</option> <option value="$item->id">$item->name</option> </select>
在我的控制器,我试过这个:
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
显示实体的所有信息。
Laravel提供了一个带有list()函数的查询生成器
在你的情况下,你可以replace你的代码
$items = Items::all(['id', 'name']);
同
$items = Items::lists('name', 'id');
另外,您还可以将其与其他查询生成器链接起来。
$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的function应该是
$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 – 查看Deprecations列表
只需将您的控制器更改为以下内容:
public function create() { $items = Subject::all(['id', 'name']); return View::make('your view', compact('items',$items)); }
而你的看法是:
<div class="form-group"> {!! Form::Label('item', 'Item:') !!} <select class="form-control" name="item_id"> @foreach($items as $item) <option value="{{$item->item_id}}">{{$item->id}}</option> @endforeach </select> </div>
希望这会解决你的问题
Laravel> = 5.3方法列表()不推荐使用pluck()
$items = Items::pluck('name', 'id'); {!! Form::select('items', $items, null, ) !!}
这将为您提供一个select框,其中具有与数据库中的ID号相同的选项
例如,如果你在你的数据库表中有这个:
id name 1 item1 2 item2 3 item3 4 item4
在select框中它会是这样的
<select> <option value="1">item1</option> <option value="2">item2</option> <option value="3">item3</option> <option value="4">item4</option> </select>
我发现这个pluck现在返回一个集合,并且你需要在pluck的末尾添加 – > toArray()…就像这样: pluck('name', 'id')->toArray();
调节器
$campaignStatus = Campaign::lists('status', 'id');
compact('campaignStatus')会导致[id => status]; //示例[1 =>'pending']
return view('management.campaign.index', compact('campaignStatus'));
视图
{!! Form::select('status', $campaignStatus, array('class' => 'form-control')) !!}
Laravel使用Form::select
数组。 所以我通过如下的数组:
$datas = Items::lists('name', 'id'); $items = array(); foreach ($datas as $data) { $items[$data->id] = $data->name; } return \View::make('your view', compact('items',$items));
在你看来:
<div class="form-group"> {!! Form::label('item', 'Item:') !!} {!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!} </div>
在你的控制器中,添加,
public function create() { $items = array( 'itemlist' => DB::table('itemtable')->get() ); return view('prices.create', $items); }
而在你看来,使用
<select name="categories" id="categories" class="form-control"> @foreach($itemlist as $item) <option value="{{ $item->id }}">{{ $item->name }}</option> @endforeach </select>
在select框中,它会是这样的,
<select> <option value="1">item1</option> <option value="2">item2</option> <option value="3">item3</option> ... </select>
Laravel 5.3使用pluck($ value,$ key)
$ value显示在您的下拉列表中,$ key是id
调节器
$products = Product::pluck('name', 'id'); return view('main.index', compact('products'));
视图
{{ Form::select('id', $products, null, ['class' => 'form-control']) }}
对于Laravel 5:
$items = Items::lists('name', 'id');
将项目推到集合的开头。
$items->prepend($value, $key = null);
Laravel 5. *
在你的控制器中:
$items= Items::pluck('name', 'id')->toArray(); return view('your view', compact('items', $items));
在你看来:
{{ Form::select('organization_id', $items, null, []) }}
试试这个。 不使用控制器
{{Form :: select('apartment_id',\ App \ Apartment :: all() – > pluck('apartment_name','apartment_id') – > toArray(),null,['class'=>'select2 form-控制','多个'=>'多个'])}}