选择不同的值计数laravel

时间:2014-03-02 18:32:14

标签: sql laravel

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

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

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

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

如何减少查询次数?

3 个答案:

答案 0 :(得分:12)

发出SQL请求:

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

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

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

答案 1 :(得分:9)

你可以尝试

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

答案 2 :(得分:0)

这是你写的方式 - >

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