首页 > 解决方案 > Laravel:将 Eloquent 集合转换为数组而不转换元素

问题描述

有没有一种(简单的)方法可以将 Eloquent 集合转换为实际数组而不转换元素本身?

当我尝试将集合传递给 .php 等 php 方法时遇到麻烦array_rand($collection)。这给了我错误:array_rand() expects parameter 1 to be array, object given

我通过使用$collection->shuffle()->first();which 工作正常来解决这个问题,当然我可以遍历集合并将所有内容推送到一个数组中,但出于好奇,我想知道我是否忽略了某些东西。

更新/结论

a和 aall上的方法似乎有所不同。Eloquent 集合上的 all 返回一个支持集合,支持集合返回一个数组。Illuminate\Support\CollectionIlluminate\Database\Eloquent\Collection

因此,要获得一系列 Eloquent 模型,您需要使用SomeModel::all()->all();

标签: phparrayslaravelcollections

解决方案


我的第一个想法是,$collection->toArray()但这也将 Eloquent 模型转换为数组。但是文档$collection->all()应该避免这种情况。

toArray还将集合的所有嵌套对象转换为数组。如果要获取原始底层数组,请改用该all方法。


推荐阅读