如何将此集合转换为 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 中的自定义中间件

如何将JSON数据传递给laravel中的视图

如何将此 MySQL 查询转换为 Laravel?

如何将此sql语句转换为laravel orm?

如何将此 SQL 转换为 Laravel Query Builder 查询?

如何将此 sql 查询转换为 laravel 查询生成器