ultimate
ultimate

Reputation: 658

Select distinct value count laravel

I have an orders table where there is a status column.

I am trying to get the count of each status like this :

$pending = Order::where('status','=','pending')->count();
$active = Order::where('status','=','active')->count();

But this is not efficient as am having to make one call for each status type.

How can I reduce number of queries ?

Upvotes: 6

Views: 12025

Answers (3)

priti
priti

Reputation: 11

here is the way you write ->

$users= DB::table('table_name')->distinct()->get(['column_name']);
$users_count = $users->count();

Upvotes: 1

Alexandr  Pisarenko
Alexandr Pisarenko

Reputation: 141

To make an SQL request:

SELECT count(DISTINCT `status_id`) FROM `dbname`.orders WHERE `user_id` = '2';

In Laravel you can try the following:

$user->orders()->distinct()->count(["status_id"]);

Upvotes: 14

Tony Arra
Tony Arra

Reputation: 11109

You could try

$orders = Order::select(DB::raw('count(*) as order_count, status'))
  ->groupBy('status')
  ->get();

Upvotes: 9

Related Questions