我正在尝试构建查询以获取具有关系Orders
的所有products
,其中products
金额大于或等于某个值。
order
可以有多个products
,产品有一个名为amount
的属性。
现在我需要做的是获取Orders
,其中products
的总金额(所有相关products
的财产金额之和)符合条件。
$orders = Order::
when( $request->amount, function($query) use ($request){
$query->whereHas('products', function($q) use ($request){
$q->where('amount', '>=', $request->amount);
});
})
->get();
此代码的作用是检查每个连接产品的金额是否大于或等于输入,但我无法绕过它来检查sum
的{所有已连接的amount
上的{1}}。有小费吗?
答案 0 :(得分:3)
使用此:
$orders = Order::
when( $request->amount, function($query) use ($request){
$query->whereHas('products', function($q) use ($request){
$q->select(DB::raw('sum(amount) amount'))
->having('amount', '>=', $request->amount);
});
})
->get();