php - 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\Collection
Illuminate\Database\Eloquent\Collection
因此,要获得一系列 Eloquent 模型,您需要使用SomeModel::all()->all();
解决方案
我的第一个想法是,$collection->toArray()
但这也将 Eloquent 模型转换为数组。但是文档说$collection->all()
应该避免这种情况。
toArray
还将集合的所有嵌套对象转换为数组。如果要获取原始底层数组,请改用该all
方法。
推荐阅读
- google-sheets - 在 Google 表格中,我如何计算超过 24 小时的持续时间(每小时价值)?
- reactjs - 集成 React 和 Springboot
- reactjs - React 应用程序与 Firebase 在路由更改时闪烁
- python - ValueError:在给定的容差范围内找不到根
- amazon-web-services - MySQL Workbench 连接到 AWS,收到错误“无法连接到本地主机”
- javascript - 在 NextJS 中,如何将 server.js 中的数据传递给 _app.js?
- html-lists - ol 6.9.0,无法创建生产包
- linux - 使用变量过滤器列出文件
- c# - 如何在单击 xamarin.forms.maps iOS c# 时更改 pin 图标
- javascript - 无法再向不和谐频道发送消息