Php Laravel延迟加载的不同结果

Php Laravel延迟加载的不同结果,php,laravel,eager-loading,Php,Laravel,Eager Loading,在Laravel中,这两个函数调用之间有什么区别 $this->load(['episodes.item.cast' => function ($q) use (&$cast) { $cast = $q->get()->groupBy("id"); }]); 及 它们会产生不同的结果,但我不明白为什么。我假设$this已经是一个存在的对象(因为您在它上面使用了load)。所谓存在,我的意思是$this->exists=>true 这就是重点。第一个查询还

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

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


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

我假设
$this
已经是一个存在的对象(因为您在它上面使用了
load
)。所谓存在,我的意思是
$this->exists=>true

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


所以基本上,如果您已经查询了对象
$obj=YourModel::find(1)
,然后执行
$obj->get()
,您将得到与
YourModel::all()
相同的结果。因此,第一个查询以一种奇怪的方式给出了我想要的结果。我如何重写它,但仍然得到相同的结果?是什么让它“奇怪”?
$cast = $this->load('episodes.item.cast')->get()->groupBy("id");