繁体   English   中英

Laravel:将Eloquent集合转换为Array而不转换元素

[英]Laravel: Convert Eloquent collection to Array without converting elements

有没有(简单)方法将Eloquent Collection转换为实际数组而不转换元素本身?

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

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

更新/结论

Illuminate\\Support\\Collection上的all方法和Illuminate\\Database\\Eloquent\\Collection之间似乎有区别。 Eloquent Collection上的all返回支持集合,Support Collection返回一个Array。

因此,要获得一个SomeModel::all()->all();模型数组,您需要使用SomeModel::all()->all();

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

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

您可以使用all collection helper:

all方法返回集合表示的底层数组:

collect([1, 2, 3])->all();

// [1, 2, 3]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM