как составить правильно запрос sql чтобы получить количество записей по полю status за день неделю, месяц год , все время laravel 8?

    //вот так думаю не лучшее решение потому что много походу запросов к БД так это только для одного дня а если сразу для нескольких времен
    
    //Нужно посчитать количество заказов за текущий день
    (new, processing, completed, rejected) 
    
    //Нужно посчитать количество заказов за текущий неделю
    (new, processing, completed, rejected) 
    
    //Нужно посчитать количество заказов за текущий месяц
    (completed, rejected) 
    
    //Нужно посчитать количество заказов за текущий год
    (completed, rejected) 
//Нужно посчитать количество заказов за все время
    (completed, rejected)
    
    public function countOrders(): JsonResponse
        {
            $user = Auth::user();
    
            //for Day
            $countOrdersNewDay = $user->orders()
                ->where('orders.created_at', '>', Carbon::today())
                ->where('status', 'new')
                ->count();
            $$countOrdersProcessingDay = $user->orders()
                ->where('orders.created_at', '>', Carbon::today())
                ->where('status', 'processing')
                ->count();
            $countOrdersCompletedDay = $user->orders()
                ->where('orders.created_at', '>', Carbon::today())
                ->where('status', 'completed')
                ->count();
            $countOrdersRejectedDay = $user->orders()
                ->where('orders.created_at', '>', Carbon::today())
                ->where('status', 'rejected')
                ->count();
    
            return response()->json([
                'count_orders' => [
                    'day' => [
                        'new' => $countOrdersNewDay,
                        'processing' => $$countOrdersProcessingDay,
                        'completed' => $countOrdersCompletedDay,
                        'rejected' => $countOrdersRejectedDay,
                    ]
                ]
            ]);
        }

спасибо

Ответы (0 шт):