Intereting Posts
php: Сохранить изображение в Mysql blob, хорошо или плохо? используйте exec (); в php-скрипте для отправки электронной почты из оболочки Как пути вычисляются в PHP – Почему файлы в текущей директории игнорируются? Doctrine Regular vs Fetch join Наследование и статические методы и свойства PHP Как получить продукты из определенной категории в magento электронной коммерции WordPress делает недействительным cf7 после вызова api PHPMailer – SMTP ERROR: команда паролей не удалась при отправке почты с моего сервера Создание безопасного публичного API с помощью PHP / MYSQL postgresql nextval вопрос о последовательностях Как использовать расширение PHP DOM loadHTML Форма представления не будет оставаться на одной странице защищать доступ к файлу пользователей, доступ к которому может получить только владелец? PHP – Загрузка нескольких изображений PHP и MySQL. Развертывание N разделителей с N значениями из массива

Laravel-5, как заполнить поле выбора из базы данных с идентификатором и значением имени

Я хочу создать поле выбора, как показано ниже, с помощью подсветки \ 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 '])}}