• 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

  • 相关阅读:
    在JS中如何去掉千分号
    JS中showModalDialog详细使用
    js里的insertCell和appendChild的区别
    js showModalDialog
    js中innerHTML,innerText,outerHTML的用法和区别
    MYSQL入门指导
    对拍程序C语言实现
    人性的弱点
    POJ3207(2SAT)
    期末考试时间安排
  • 原文地址:https://www.cnblogs.com/sgm4231/p/10196458.html
Copyright © 2020-2023  润新知