我有一个订单表,其中有一个状态列.
我试图得到每个状态的计数如下:
$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)
你可以试试
$orders = Order::select(DB::raw('count(*) as order_count, status'))
->groupBy('status')
->get();
Run Code Online (Sandbox Code Playgroud)