我有一个订单表,其中有一个状态列。
我试图得到每个状态的计数:
$pending = Order::where('status','=','pending')->count();
$active = Order::where('status','=','active')->count();
但这不是很有效,因为我必须为每种状态类型进行一次调用。
如何减少查询次数?
答案 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();