Выберите несколько списка dropdwon из базы данных в Laravel

в моем веб-приложении я добавил несколько данных в базу данных с json_encode, используя несколько вариантов выбора.

в моей колонке базы данных это показано ниже.

["Agriculture & Food Processing","Automobiles","Banking & Financial Services"]

Теперь я хочу получить эти данные для редактирования и обновления. мое мнение похоже на прикрепленное изображение

Выберите несколько списка dropdwon из базы данных в Laravel

Мой код, как показано ниже

<div class = "form-group">
<label for = "industry">Intrsting Industry</label>
<select id = "industry" name = "industry[]" class = "form-control" multiple>
    <option value = "">Select Option  </option>
    <option>Agriculture &amp; Food Processing</option>
    <option>Automobiles</option>
    <option>Banking &amp; Financial Services</option>
    <option>BPO / KPO </option>
    <option>Civil &amp; Construction</option>
    <option>Consumer Goods &amp; Durables</option>
    <option>Consulting</option>
    <option>Education</option>
    <option>Engineering</option>
    <option>Ecommerce &amp; Internet</option>
    <option>Events &amp; Entertainment</option>
    <option>Export &amp; Import</option>
    <option>Government &amp; Public Sector</option>
    <option>Healthcare</option>
    <option>Hotel, Travel &amp; Leisure</option>
    <option>Insurance</option>
    <option>IT &amp; Telecom</option>
    <option>Logistics &amp; Transportation</option>
    <option>Manufacturing</option>
    <option>Manpower &amp; Security</option>
    <option>News &amp; Media</option>
    <option>NGO &amp; Non profit</option>
    <option>Pharmaceutical</option>
    <option>Real Estate</option>
    <option>Wholesale &amp; Retail</option>
    <option>Others</option>
  </select>

Итак, как я могу выбрать приведенный выше список из базы данных.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
388
1

Ответы 1

на самом деле вам не нужно json_encode вручную, у laravel есть возможность В ролях любого атрибута для массива/json:

Мы предполагаем, что название вашей модели Item.

//Model
class Item{
   protected $casts = [
      'industry' => 'array'
   ]
//snap
}
//Controller
class ItemController extends Controller{
   //snap   
   public function update($id,\Request $request){
      $item = Item::findOrFail($item);
      // no need to json_encode! laravel handle this magically!
      $item->industry = $request->industry;
      $item->save();
   }
   //snap
   public function show($id){
      $item = Item::findOrFail($id);
      return view('item.show',compact('item'));
   }
}
@php
   // just making an array of industry options, so later we will iterate on it.
   $industries = [
      'Agriculture &amp; Food Processing',
      'Automobiles',
      'Banking &amp; Financial Services',
      //list all the industries here
   ];
@endphp
<select id = "industry" name = "industry[]" class = "form-control" multiple>
   <!-- default value -->
    <option value = "">Select Option </option>
    @foreach($industries as $industry)
       <!-- if industry found in current item's industry field we add selected to it -->
       <option @if (in_array($industry,$item->industry)) selected @endif>{{$industry}}</option>
    @endforeach
  </select>

я получил ошибку под названием «in_array () ожидает, что параметр 2 будет массивом, заданной строкой». в этом случае я не получил данные из модели. Я напрямую получаю данные через фасад DB::table.

Anushka Deshan 05.02.2019 05:50

хорошо, видите, что вся модель, которую я описал, отвечает за преобразование вашей отрасли (которая по умолчанию извлекается как строка) в массив. поэтому, если вы хотите использовать фасад БД, вам нужно создать его самостоятельно. используйте функцию json_decode, чтобы преобразовать отраслевое поле в массив.

Mojtaba Hn 05.02.2019 20:58

Другие вопросы по теме