Я хочу создать поле выбора, как показано ниже, с помощью подсветки \ html :
<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 предоставляет построитель запросов с функцией lists ()
В вашем случае вы можете заменить свой код
$items = Items::all(['id', 'name']);
с
$items = Items::lists('name', 'id');
Кроме того, вы можете связать его с другим Query Builder.
$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 должна быть
$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 – посмотрите списки искуплений
Просто измените свой контроллер на следующее:
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, ) !!}
Это даст вам поле выбора с теми же параметрами выбора, что и номера идентификаторов в БД
например, если у вас это есть в вашей таблице DB:
id name 1 item1 2 item2 3 item3 4 item4
в поле выбора это будет так
<select> <option value="1">item1</option> <option value="2">item2</option> <option value="3">item3</option> <option value="4">item4</option> </select>
Я узнал, что pluck теперь возвращает коллекцию, и вам нужно добавить -> toArray () в конце pluck … так вот так: 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> <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, []) }}
Попробуй это. Без использования контроллера
{{Форма :: select ('apartment_id', \ App \ Apartment :: all () -> pluck ('apartment_name', 'apartment_id') -> toArray (), null, ['class' => 'select2 form- control ',' multiple '=>' multiple '])}}