2016-05-14 63 views
1

在Laravel中,这两个函数调用有什么区别?与Laravel的不同结果Lazy Eager Loading

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

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

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

回答

1

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

还有那里的一点。第一个查询就好,但真的很奇怪。但第二根本不行。通过在现有对象上使用->get(),您可以创建新的空查询并获取所有值。

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

+0

好的。所以第一个查询以一种奇怪的方式给出了我想要的结果。我怎么可以重写它,但仍然得到相同的结果?是什么让它“奇怪”? –