ilovebcc

277 经验值

我再次认真读了laravel issues的讨论, 还是没有明白, 主要是这句话

In order for the builder to not call newCollection twice, it would have to start passing Collections around under the hood.

看意思是如何避免调用两次newCollection, 不过怎么实现没有理解到

另外,我也看了laravel5.4的源码, 简单总结一下

  • builder->get方法入口

  • 调用 getModels

    • 调用 hydrate(参数1:数据库记录, 参数2:连接(不明白作用))

      • 首次调用newCollection, 再调用all又返回了数组方式的models

  • 再次调用了newCollection

非常感谢回答, 看来我需要换一个思路了
不过, 还是有些疑问, 这两次执行的目的各是什么呢?
我反复看了几遍源码, 还是有些不明白

  • 环境 laravel5.4

我发现laravel的builder->get方法会调用两次newCollection方法

google了一下, 发现有一个解释 https://github.com/laravel/framework/issues/16174

还是没有完全明白, 我需要重载newCollection方法, 做一些特殊的查询工作(hbase相关的批量查询)

经过测试, 也会调用两遍

希望有大神帮忙介绍一下调用两次newCollection的原因, 以及如何避免