Я обновил свое приложение с Laravel 4.2 до 5.2. Эта строка в контроллере захватила список каталогов:
$directories = DirectoryModel::lists('name', 'id');
и я отправил его сжатым в лезвие, чтобы создать раскрывающееся меню в лезвии:
return view('citations.createBlank', compact('citation'), compact('directories'));
В лезвии я использовал коллектив Form для создания раскрывающегося меню следующим образом:
Form::select('directory_id', [null=>'Please Select'] + $directories, $citation->directory_id, ['id'=>'directory','class'=>'form-control input-sm js-basic-single','required'])
В Laravel 4.2 $directories был массивом в лезвии. Теперь в 5.2 это Коллекция (объект), и блейд выдает ошибку: Объект класса Illuminate\Support\Collection не может быть преобразован в int.
Как преобразовать это в массив в контроллере? Или мне нужно переписать свой блейд, чтобы генерировать раскрывающееся меню по-другому?
Вам нужно использовать метод ->toArray()
:
$directories = DirectoryModel::lists('name', 'id')->toArray();
Кстати:
Метод lists
для объектов Collection, построителя запросов и построителя запросов Eloquent был переименован в pluck
. Сигнатура метода остается прежней.
Так что вам лучше использовать pluck
вместо lists
, это устарело:
$directories = DirectoryModel::pluck('name', 'id')->toArray();
Возможный дубликат коллекция laravel в массив