到目前为止,我知道如何使用Eloquent(和pluck)来填充下拉列表
public function create()
{
$items = Item::all()->pluck('name', 'id');
return view('admin.item.create', compact('items'));
}
用这个
{!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!}
我可以生成这个
<select name="items" class="form-control">
<option value="1">Item 1</option>
<option value="2">Item 2</option>
<option value="3">Item 3</option>
</select>
但现在我想创建像这样的东西
<select name="items" class="form-control">
<option value="1">Item 1 - Location</option>
<option value="2">Item 2 - Location</option>
<option value="3">Item 3 - Location</option>
</select>
我只能使用带有2个属性的pluck。但现在我希望它显示3个属性。我怎么做?我顺便使用Laravel 5.3。谢谢你的帮助。
答案 0 :(得分:0)
你有一个像[1=> "something",2=>"else"]
这样的数组。因此,您的任务是迭代数组并编辑值或从数据库中选择位置并使用foreach
或array_filter
如下所示:
$items=[];
foreach(Item::all() as $item){
$items[$item->id] = $item->name . " - " . $item->location->name; // build string to display here
}
编辑:
您的评论说位置在同一张桌子上,所以它看起来像......
$items=[];
foreach(Item::all() as $item){
$items[$item->id] = $item->name . " - " . $item->location; // build string to display here
}
答案 1 :(得分:0)
采摘位置
public function create()
{
$items = Item::all()->pluck('name', 'id', 'location');
return view('admin.item.create', compact('items'));
}
像这样生成
<select name="items" class="form-control">
@foreach($items as $item)
<option value="{{ $item->id }}">{{ $item->name }} - {{ $item->location }}</option>
@endforeach
</select>
答案 2 :(得分:0)
创建数组列表的最佳方法是。
public function create(){
$items = Item::where('id','<>','')->lists('name', 'id');
return view('admin.item.create', compact('items'));}