如何将此集合转换为 Laravel 5.2 中的数组
Posted
技术标签:
【中文标题】如何将此集合转换为 Laravel 5.2 中的数组【英文标题】:How do I convert this collection to an array in Laravel 5.2 【发布时间】:2019-09-01 06:41:39 【问题描述】:我已将我的应用从 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。
如何将其转换为 Controller 中的数组?还是我需要重写我的刀片以不同的方式生成下拉?
【问题讨论】:
laravel collection to array的可能重复 【参考方案1】:你需要使用->toArray()
方法:
$directories = DirectoryModel::lists('name', 'id')->toArray();
顺便说一句:
集合、查询构建器和 Eloquent 查询构建器对象上的 lists
方法已重命名为 pluck
。方法签名保持不变。
所以你最好使用pluck
而不是lists
,它已被弃用:
$directories = DirectoryModel::pluck('name', 'id')->toArray();
Upgrade Guide
【讨论】:
以上是关于如何将此集合转换为 Laravel 5.2 中的数组的主要内容,如果未能解决你的问题,请参考以下文章
如何将控制器中的 Laravel 4.2 beforeFilter 转换为 Laravel 5.2 中的自定义中间件