选择不同的值计数laravel

ult*_*ate 6 sql laravel

我有一个订单表,其中有一个状态列.

我试图得到每个状态的计数如下:

$pending = Order::where('status','=','pending')->count();
$active = Order::where('status','=','active')->count();
Run Code Online (Sandbox Code Playgroud)

但这不是有效的,因为我必须为每种状态类型进行一次调用.

如何减少查询次数?

小智 12

要发出SQL请求:

SELECT count(DISTINCT `status_id`) FROM `dbname`.orders WHERE `user_id` = '2';
Run Code Online (Sandbox Code Playgroud)

在Laravel,您可以尝试以下方法:

$user->orders()->distinct()->count(["status_id"]);
Run Code Online (Sandbox Code Playgroud)


Ton*_*rra 9

你可以试试

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