【发布时间】:2014-04-03 14:33:34
【问题描述】:
我有一个订单表,其中有一个状态列。
我正在尝试像这样获取每个状态的计数:
$pending = Order::where('status','=','pending')->count();
$active = Order::where('status','=','active')->count();
但这并不高效,因为必须为每种状态类型调用一次。
如何减少查询次数?
【问题讨论】:
我有一个订单表,其中有一个状态列。
我正在尝试像这样获取每个状态的计数:
$pending = Order::where('status','=','pending')->count();
$active = Order::where('status','=','active')->count();
但这并不高效,因为必须为每种状态类型调用一次。
如何减少查询次数?
【问题讨论】:
发出 SQL 请求:
SELECT count(DISTINCT `status_id`) FROM `dbname`.orders WHERE `user_id` = '2';
在 Laravel 中,您可以尝试以下操作:
$user->orders()->distinct()->count(["status_id"]);
【讨论】:
你可以试试
$orders = Order::select(DB::raw('count(*) as order_count, status'))
->groupBy('status')
->get();
【讨论】:
这是你的写作方式->
$users= DB::table('table_name')->distinct()->get(['column_name']);
$users_count = $users->count();
【讨论】: