【发布时间】:2019-04-10 11:04:34
【问题描述】:
我正在尝试提高我的 laravel 应用程序的性能。通过删除视图中的延迟加载,我已经能够将查询量从 68 个减少到 20 个。
但是,使用预加载,仍然有 20 个查询几乎完成相同的操作。我的代码如下所示:
$products = [
'latest' => Product::with('vehicle', 'brand', 'type', 'photos')->withoutGlobalScope(ProductScope::class)->latest()->take(5)->get(),
'most_viewed' => Product::with('vehicle', 'brand', 'type', 'photos')->withoutGlobalScope(ProductScope::class)->mostViewed()->take(5)->get(),
'nearest' => Product::with('vehicle', 'brand', 'type', 'photos')->withoutGlobalScope(ProductScope::class)->nearest($address)->take(5)->get(),
];
这会产生 15 个查询(每个 5 个),因为每次还会再次查询关系。是否可以将这些查询组合在一起,使其可能减少到 7 个查询而不是 15 个?
【问题讨论】:
-
你使用的是什么版本的 Laravel?
-
对不起,忘了说,我用的是 Laravel 5.8
标签: laravel performance eloquent eager-loading