当总数大于n时,如何仅筛选出结果?换句话说,只有比n更多的IP(比如说500)
我尝试了->where('total','>',500)
,但它没有用
谢谢
$visits = DB::table('visits')
->select('ip_address',DB::raw('count(*) as total'))
->where('timestamp', '>=',\Carbon\Carbon::now()->startOfDay())
->groupBy('ip_address')
->orderBy('total', 'desc')
->get();
WHERE
不能用于分组项目(例如count(*)
),而HAVING
可以使用。你可以参考WHERE vs HAVING问题来了解更多细节,
你必须使用having
->having('total', '>', 100)
您可以选择使用havingRaw
->havingRaw('count(*) > 2500')
->havingRaw('total > 2500')
您可以使用filter
方法
$visits = DB::table('visits')
->select('ip_address', DB::raw('COUNT(*) as total'))
->where('timestamp', '>=', \Carbon\Carbon::now()->startOfDay())
->groupBy('ip_address')
->orderBy('total', 'desc')
->get();
$filtered_visits = $visits->filter(function($item) {
return $item->total > 500;
});