有什么方法可以避免在Laravel 5.7 Eloquent中加载父级时加载这些$ with模型?

问题描述 投票:1回答:1

我有一个laravel应用程序,其中有使用$ with的模型,在前端,每​​当我加载此模型时,它也会加载其子级的$ with。你们能告诉我如何避免这种情况吗?

以下是供您了解情况的示例。

ModelA.php
$with = [ModelK, ModelL, ModelM];
ModelK.php
$with = [ModelM, ModelN];
ModelM.php
$with = [ModelX, ModelY, ModelZ];

在我的前端,无论我在哪里雄辩地使用ModelA,它都会对ModelMModelX进行查询。这使我的网站变慢。同样,如果我从ModelA检索4-5行数据,那么它还会对所有这些模型ModelMModelX进行运行查询,并且每一行也要查询一次。因此查询数量也在增加。

这些模型之间的关系是一对一,一对多和多对多。

在加载父模型时,有什么方法可以避免这些子模型?

php laravel eloquent orm laravel-5.7
1个回答
0
投票

如果您在模型中使用$with属性,则可以使用以下命令禁用查询中的eagerLoading:

ModelA::setEagerLoads([])->first();
© www.soinside.com 2019 - 2024. All rights reserved.