Laravel 的集合写法

file

刻意练习,每日精进
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

追踪源码可知在Illuminate/Pagination/AbstractPaginator.php中:

    /**
     * Get the paginator's underlying collection.
     *
     * @return \Illuminate\Support\Collection   
     */
    public function getCollection()
    {
        return $this->items;
    }

    /**
     * Set the paginator's underlying collection.
     *
     * @param  \Illuminate\Support\Collection  $collection
     * @return $this
     */
    public function setCollection(Collection $collection)
    {
        $this->items = $collection;

        return $this;
    }

查看注释可知 getCollection 方法返回值是一个集合对象,然后集合对象就可以调用集合中的map方法对值进行操作.然后再次调用setCollection方法返回的是当前对象,也就是Illuminate\Pagination\LengthAwarePaginator这个分页对象,就是Laravel-admin需要的数据格式.

以下是我在tinker中测试的结果:


总结就是先转换成集合对象,然后调用集合的map方法对数据进行操作,然后再重新转换回来分页对象.

5年前 评论
讨论数量: 4

追踪源码可知在Illuminate/Pagination/AbstractPaginator.php中:

    /**
     * Get the paginator's underlying collection.
     *
     * @return \Illuminate\Support\Collection   
     */
    public function getCollection()
    {
        return $this->items;
    }

    /**
     * Set the paginator's underlying collection.
     *
     * @param  \Illuminate\Support\Collection  $collection
     * @return $this
     */
    public function setCollection(Collection $collection)
    {
        $this->items = $collection;

        return $this;
    }

查看注释可知 getCollection 方法返回值是一个集合对象,然后集合对象就可以调用集合中的map方法对值进行操作.然后再次调用setCollection方法返回的是当前对象,也就是Illuminate\Pagination\LengthAwarePaginator这个分页对象,就是Laravel-admin需要的数据格式.

以下是我在tinker中测试的结果:


总结就是先转换成集合对象,然后调用集合的map方法对数据进行操作,然后再重新转换回来分页对象.

5年前 评论

@Flourishing 分析的很透彻,可以出师了

5年前 评论

@Flourishing 怎么定位到这个文件的Illuminate/Pagination/AbstractPaginator.php 我只能用全局搜索定位这个方法。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!