Laravel-5如何从id值和名称值的数据库中填充选择框

bor*_*Blu 48 php laravel blade laravel-5

我想使用illuminate\html创建一个类似下面的选择框:

<select>
    <option value="$item->id">$item->name</option>
    <option value="$item->id">$item->name</option>
</select>
Run Code Online (Sandbox Code Playgroud)

在我的控制器中我尝试了这个:

public function create()
{
    $items = Items::all(['id', 'name']);

    return view('prices.create', compact('id', 'items'));
}
Run Code Online (Sandbox Code Playgroud)

在我看来这个:

<div class="form-group">
    {!! Form::Label('item', 'Item:') !!}
    {!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!}
</div>
Run Code Online (Sandbox Code Playgroud)

问题是,而不是$item->name显示实体的所有信息.

min*_*noz 96

Laravel提供了一个带有lists()函数的查询生成器

在您的情况下,您可以替换您的代码

$items = Items::all(['id', 'name']);
Run Code Online (Sandbox Code Playgroud)

$items = Items::lists('name', 'id');
Run Code Online (Sandbox Code Playgroud)

此外,您还可以将其与其他查询生成器链接.

$items = Items::where('active', true)->orderBy('name')->lists('name', 'id');
Run Code Online (Sandbox Code Playgroud)

来源:http://laravel.com/docs/5.0/queries#selects


Laravel 5.2的更新

非常感谢@jarry.正如您所提到的,Laravel 5.2的功能应该是

$items = Items::pluck('name', 'id');
Run Code Online (Sandbox Code Playgroud)

要么

$items = Items::where('active', true)->orderBy('name')->pluck('name', 'id');
Run Code Online (Sandbox Code Playgroud)

ref:https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0 - 查看Deprecations列表

  • 因为5.2`list`被弃用而赞成`pluck`.在你的例子中,它将是`Items :: all(['id','name']) - > pluck('name','id');` (6认同)
  • Mininoz,如何在不使用`Form`类的情况下显示刀片中的选择框,例如`@foreach($ items as $ items_each)<option value ="{!! $ items_each-> id !!}"> {!! $ items_each-> name !!} </ option> @ endforeach` (2认同)

lew*_*s4u 23

Laravel> = 5.3方法列表()已弃用 pluck()

$items = Items::pluck('name', 'id');

{!! Form::select('items', $items, null, ) !!}
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个选择框,其中包含与DB中的ID编号相同的选项

例如,如果您在数据库表中有这个:

id name
1  item1
2  item2
3  item3
4  item4
Run Code Online (Sandbox Code Playgroud)

在选择框中它将是这样的

<select>
<option value="1">item1</option>
<option value="2">item2</option>
<option value="3">item3</option>
<option value="4">item4</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我发现pluck现在返回一个集合,你需要在pluck结束时添加 - > toArray()......所以这样: pluck('name', 'id')->toArray();


Soh*_*415 20

只需将您的控制器更改为以下内容:

public function create()
{
    $items = Subject::all(['id', 'name']);
    return View::make('your view', compact('items',$items));
}
Run Code Online (Sandbox Code Playgroud)

您的观点是:

<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>
Run Code Online (Sandbox Code Playgroud)

希望这能解决你的问题


Has*_*iri 8

调节器

 $campaignStatus = Campaign::lists('status', 'id');
Run Code Online (Sandbox Code Playgroud)

compact('campaignStatus')将导致[id => status]; //示例[1 =>'待定']

return view('management.campaign.index', compact('campaignStatus'));
Run Code Online (Sandbox Code Playgroud)

视图

{!! Form::select('status', $campaignStatus, array('class' => 'form-control')) !!}
Run Code Online (Sandbox Code Playgroud)

  • 由于此表达式类-&gt;表单控件不起作用。Naing Win {{!! Form :: select('item_id',$ items,null,['class'=&gt;'form-control'])!!}有用 (3认同)

Nai*_*Win 6

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));
Run Code Online (Sandbox Code Playgroud)

在你看来:

<div class="form-group">
    {!! Form::label('item', 'Item:') !!}
    {!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!}
</div>
Run Code Online (Sandbox Code Playgroud)


BIB*_*NJU 6

在您的控制器中,添加,

public function create()
{
    $items = array(
        'itemlist' =>  DB::table('itemtable')->get()
      );

    return view('prices.create', $items);
}
Run Code Online (Sandbox Code Playgroud)

在您看来,使用

<select name="categories" id="categories" class="form-control">
  @foreach($itemlist as $item)
    <option value="{{ $item->id }}">{{ $item->name }}</option>
  @endforeach
</select>
Run Code Online (Sandbox Code Playgroud)

在选择框中,它会是这样的,

<select>
 <option value="1">item1</option>
 <option value="2">item2</option>
 <option value="3">item3</option>
 ...
</select>
Run Code Online (Sandbox Code Playgroud)


Ged*_*nas 5

我在toArray()之后添加了pluck

$items = Item::pluck('name', 'id')->toArray();

{{ Form::select('item_id', [null=>'Please Select'] + $items) }}
Run Code Online (Sandbox Code Playgroud)