我遇到了一个小麻烦,拉维尔和急于加载的关系。我有三个模型
AssetFolder
,
Asset
DownloadLog
-
资产管理人
哈斯曼
资产
assets
-
资产
下载日志
通过
downloads
$folder = AssetFolder::where('name', 'Example')
->with([
'assets' => function (HasMany $query) {
$query->orderBy('name', 'asc');
}
])->first();
这部分效果很好。但在本查询中,我还希望
资产
下载日志
$folder = AssetFolder::where('name', 'Corporate Assets')
->with([
'assets' => function (HasMany $query) {
$query->orderBy('name', 'asc');
},
'assets.downloads'
])->first();
我现在希望
资产
包含关系的模型
下载
充满
但不幸的是事实并非如此。这个
下载
关系甚至没有被提及。所以我尝试了解决方案2-
$folder = AssetFolder::where('name', 'Corporate Assets')
->with([
'assets' => function (HasMany $query) {
$query
->with('downloads')
->orderBy('name', 'asc');
}
])->first();
这也不起作用-结果和上面一样。我本以为会成功,但没成功。所以为了测试,我进入了
资产管理人
将我的hasmanny关系方法建模并更新为-
public function assets()
{
return $this
->hasMany(Asset::class)
->with('downloads');
}
那就行了!这很好,但问题是,90%的时候,我不想把下载日志和正在加载的资产一起拉出来。这就是为什么我认为solution#2可以工作的原因,因为我认为它只是改变了HasMany查询。
我在这里做错什么了吗?