How do I get count from multiple columns - laravel

Viewed 38

I want to fetch count requests by status for each request I use this code and it works, but I don't think it's correct

'requests_count' => Request::where('user_id', auth()->id())
            ->addSelect([
                'active' => Request::selectRaw('count(id)')
                    ->where('status', 'active')
                    ->where('user_id', auth()->id())
            ])
            ->addSelect([
                'pause' => Request::selectRaw('count(id)')
                    ->where('status', 'pause')
                    ->where('user_id', auth()->id())
            ])
            ->addSelect([
                'pending' => Request::selectRaw('count(id)')
                    ->where('status', 'pending')
                    ->where('user_id', auth()->id())
            ])
            ->addSelect([
                'unapproved' => Request::selectRaw('count(id)')
                    ->where('status', 'unapproved')
                    ->where('user_id', auth()->id())
            ])
            ->first()

Is there a better and more effective way?

0 Answers
Related