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-控制','多个'=>'多个'])}}