zoukankan      html  css  js  c++  java
  • Laravel collection 报错 join(): Invalid arguments passed

    混淆了 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)
    => "IlluminateSupportCollection"
    >>> 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

  • 相关阅读:
    公司的CMS参数
    Kafka 如何保证消息可靠性
    我来了
    spring解决乱码
    mybatis反向工程
    Unicode控制字符
    功能跟进记录
    创建IDataProvider实例
    腾讯2016研发工程师笔试题36车 6跑道 没有计时器 最少要几次取前三
    .net mvc下拉列表DropDownList控件绑定数据
  • 原文地址:https://www.cnblogs.com/sgm4231/p/10196458.html
Copyright © 2011-2022 走看看