в моем веб-приложении я добавил несколько данных в базу данных с json_encode, используя несколько вариантов выбора.
в моей колонке базы данных это показано ниже.
["Agriculture & Food Processing","Automobiles","Banking & Financial Services"]
Теперь я хочу получить эти данные для редактирования и обновления. мое мнение похоже на прикрепленное изображение
Мой код, как показано ниже
<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 & Food Processing</option>
<option>Automobiles</option>
<option>Banking & Financial Services</option>
<option>BPO / KPO </option>
<option>Civil & Construction</option>
<option>Consumer Goods & Durables</option>
<option>Consulting</option>
<option>Education</option>
<option>Engineering</option>
<option>Ecommerce & Internet</option>
<option>Events & Entertainment</option>
<option>Export & Import</option>
<option>Government & Public Sector</option>
<option>Healthcare</option>
<option>Hotel, Travel & Leisure</option>
<option>Insurance</option>
<option>IT & Telecom</option>
<option>Logistics & Transportation</option>
<option>Manufacturing</option>
<option>Manpower & Security</option>
<option>News & Media</option>
<option>NGO & Non profit</option>
<option>Pharmaceutical</option>
<option>Real Estate</option>
<option>Wholesale & Retail</option>
<option>Others</option>
</select>
Итак, как я могу выбрать приведенный выше список из базы данных.






на самом деле вам не нужно 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 & Food Processing',
'Automobiles',
'Banking & 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>
хорошо, видите, что вся модель, которую я описал, отвечает за преобразование вашей отрасли (которая по умолчанию извлекается как строка) в массив. поэтому, если вы хотите использовать фасад БД, вам нужно создать его самостоятельно. используйте функцию json_decode, чтобы преобразовать отраслевое поле в массив.
я получил ошибку под названием «in_array () ожидает, что параметр 2 будет массивом, заданной строкой». в этом случае я не получил данные из модели. Я напрямую получаю данные через фасад DB::table.