与Laravel Lazy Eager Loading不同的结果

时间:2016-05-14 22:03:23

标签: php laravel eager-loading

在Laravel中,这两个函数调用有什么区别?

$this->load(['episodes.item.cast' => function ($q) use (&$cast) {
    $cast = $q->get()->groupBy("id");
}]);

$cast = $this->load('episodes.item.cast')->get()->groupBy("id");

他们产生了不同的结果,但我不明白为什么。

1 个答案:

答案 0 :(得分:1)

我假设$this已经是现有对象(因为你在其上使用load)。现有的我的意思是$this->exists => true

那就是重点。第一个查询是好的,但真的很奇怪。但其次是不行。在现有对象上使用->get()时,您可以创建新的空查询并获取所有值。

所以基本上,如果您已经查询了对象$obj = YourModel::find(1),然后执行了$obj->get(),您将获得与YourModel::all()相同的结果。