如何将此 collection 转换为 Laravel 5.2 中的数组
How do I convert this collection to an array in Laravel 5.2
我已将我的应用程序从 Laravel 4.2 升级到 5.2。控制器中的这一行获取了目录列表:
$directories = DirectoryModel::lists('name', 'id');
然后我将它压缩到 blade 以在 blade 中生成一个 pull-down 菜单:
return view('citations.createBlank', compact('citation'), compact('directories'));
在blade中,我使用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在blade中是一个数组。现在在 5.2 中它是 Collection (object) 并且 blade 抛出错误: Object of class Illuminate\Support\Collection could not be converted to整数
如何在控制器中将其转换为数组?或者我是否需要重写 blade 以不同方式生成下拉列表?
您需要使用->toArray()
方法:
$directories = DirectoryModel::lists('name', 'id')->toArray();
顺便说一句:
集合、查询生成器和 Eloquent 查询生成器对象的 lists
方法已重命名为 pluck
。方法签名保持不变。
所以你最好使用 pluck
而不是 lists
,它已被弃用:
$directories = DirectoryModel::pluck('name', 'id')->toArray();
我已将我的应用程序从 Laravel 4.2 升级到 5.2。控制器中的这一行获取了目录列表:
$directories = DirectoryModel::lists('name', 'id');
然后我将它压缩到 blade 以在 blade 中生成一个 pull-down 菜单:
return view('citations.createBlank', compact('citation'), compact('directories'));
在blade中,我使用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在blade中是一个数组。现在在 5.2 中它是 Collection (object) 并且 blade 抛出错误: Object of class Illuminate\Support\Collection could not be converted to整数
如何在控制器中将其转换为数组?或者我是否需要重写 blade 以不同方式生成下拉列表?
您需要使用->toArray()
方法:
$directories = DirectoryModel::lists('name', 'id')->toArray();
顺便说一句:
集合、查询生成器和 Eloquent 查询生成器对象的 lists
方法已重命名为 pluck
。方法签名保持不变。
所以你最好使用 pluck
而不是 lists
,它已被弃用:
$directories = DirectoryModel::pluck('name', 'id')->toArray();