Sql 带聚合函数的即时加载
我正在尝试使用Laravel的急切加载来解决我的商店中的N+1查询问题 -一个产品有很多变化,每个变化都有一个价格 -商店页面列出了所有产品及其价格。活动成员看到折扣定价,因此价格()和regularPrice() -我认为scopeRegularPrice()中的min()和max()没有正确加载 使用聚合函数进行即时加载是否有最佳实践? 产品模型 控制器 叶片输出 查询结果(通过Blackfire调试工具)Sql 带聚合函数的即时加载,sql,laravel,eloquent,laravel-5.3,eager-loading,Sql,Laravel,Eloquent,Laravel 5.3,Eager Loading,我正在尝试使用Laravel的急切加载来解决我的商店中的N+1查询问题 -一个产品有很多变化,每个变化都有一个价格 -商店页面列出了所有产品及其价格。活动成员看到折扣定价,因此价格()和regularPrice() -我认为scopeRegularPrice()中的min()和max()没有正确加载 使用聚合函数进行即时加载是否有最佳实践? 产品模型 控制器 叶片输出 查询结果(通过Blackfire调试工具) 您的本地作用域应该返回一些内容。所以加上 public function sco
您的本地作用域应该返回一些内容。所以加上
public function scopeRegularPrice() {
...
return 'something'
}
如果你已经退回了一些东西,那么很抱歉。我在代码中看不到任何return语句 范围应以任何方式返回Querybuilder 您可能会更好地使其正常的价格作为属性的产品模型 按价格订购变更关系。 并将此方法添加到product类
public function getRegularPriceAttribute() {
$variations = $this->variations;
// Get the live variations by where on collection , not DB query.
$liveVaries = $variations->where('live', true)->all();
// the first is the cheapest because you the variations relation should be orderBy('price')
if (! empty($liveVaries)) return [first($liveVaries)->price, last($liveVaries)->price];
return [first($variations)->price, last($variations)->price];}
我上传了带有返回值的完整函数。我早些时候就把它剪掉了,以免引起混乱。(我想问题是因为我在scopeRegularPrice()中调用了min()和max())什么是
scopeRegularPrice()
返回的?阵列?另外,当您进行比较时,如果($product->price!=$product->REQUALARPRICE()),请尝试执行if
。价格上没有括号。除非price
是一个函数而不是一个属性。