码迷,mamicode.com
首页 > 其他好文 > 详细

Laravel collection 报错 join(): Invalid arguments passed

时间:2018-12-29 17:13:02      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:join   使用   eloquent   min   class   cti   size   lod   support   

混淆了 array 与 collection,join 并不支持 collection.

array 与 collection 不同的 join 实现

  • collect([1, 2, 3, 4, 5])->implode(‘-‘);
  • join(‘-‘, [1, 2, 3, 4]);

将 array 转换成 collection

$collection = collect([1, 2, 3]);

将 collection 转换成 array

$collection->toArray();

all() 与 toArray() 的区别

如果 collection 中的 item 是 model,那么

  • toArray() 会把 model 也转换成对应的 array
  • all() 依然保留原 model

collection 在 laravel 中频繁使用

所有的 eloquent 查询返回都是一个 collection 实例,而不是 array。

我更喜欢 collection 的原因

  • toJson() 比 json_encode() 写起来更顺手,因为实例方法比方法中还要缀上源数据对象要容易记忆的多
  • collection 扩充了 array 的数据操作集,在数据处理上开发效率要高很多,这也是 Python 的优势

如何判断当前对象是 array 还是 collection

laravel tinker 中测试

$a = collect([1, 2, 3])->all()
>>> gettype($a)
=> "array"
>>> $c = collect([1, 2, 3])
>>> gettype($c)
=> "object"
>>> get_class($c)
=> "Illuminate\Support\Collection"
>>> get_class($a)
PHP Warning:  get_class() expects parameter 1 to be object, array given on line 1

可见,gettype 可以判断是否是 array,但是 gettype 无法直接得知具体的 object 对应的 class,需要调用 get_class。

如何在 laravel 项目之外使用 collection

https://github.com/tightenco/collect

Laravel collection 报错 join(): Invalid arguments passed

标签:join   使用   eloquent   min   class   cti   size   lod   support   

原文地址:https://www.cnblogs.com/sgm4231/p/10196458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!