我在控制器中有以下查询,以按年显示有关已支付和未支付的订单以及各自的金额(合计)的一些统计数据.然而,我觉得我正在使用的查询可能是优化的,但我找不到更好的方法来做到这一点.这就是我所拥有的:
public function index(Order $order)
{
$orders = Order::all()->groupBy(function ($order) {
return $order->created_at->format('Y');
})->map(function ($year) {
return $year->sum('total');
});
$unpaid_orders = Order::all()->where('payment_confirmed', 0)->groupBy(function ($order) {
return $order->created_at->format('Y');
})->map(function ($year) {
return $year->sum('total');
});
$paid_orders = Order::all()->where('payment_confirmed', 1)->groupBy(function ($order) {
return $order->payment_confirmed == false ? $order->year : $order->created_at->format('Y');
})->map(function ($year) {
return $year->sum('total');
});
return view('orders.index', compact('orders', 'unpaid_orders', 'paid_orders'));
}
在上面,我查询了三次订单模型,似乎可以进行优化.