我有一个订单表,其中有一个状态列。选择不同的值计数laravel
我试图让各状态下的计数是这样的:
$pending = Order::where('status','=','pending')->count();
$active = Order::where('status','=','active')->count();
但是,这并不有效,因为我不得不打一个电话,每一个状态类型。
如何减少查询次数?
我有一个订单表,其中有一个状态列。选择不同的值计数laravel
我试图让各状态下的计数是这样的:
$pending = Order::where('status','=','pending')->count();
$active = Order::where('status','=','active')->count();
但是,这并不有效,因为我不得不打一个电话,每一个状态类型。
如何减少查询次数?
你可以尝试
$orders = Order::select(DB::raw('count(*) as order_count, status'))
->groupBy('status')
->get();
为了使SQL请求:
SELECT count(DISTINCT `status_id`) FROM `dbname`.orders WHERE `user_id` = '2';
在Laravel,你可以尝试以下方法:
$user->orders()->distinct()->count(["status_id"]);
这值得赞赏。我看到很多人这样做是错误的 - 这是正确的。 –
这种方法有时工作更快。 –
这里是你写的方式 - >
$ users = DB :: table('表名 ') - >不同的() - >的get([' 列名']); $ users_count = $ users-> count();
像魔术一样工作。感谢名单! – TodStoychev