当总数大于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();
答案 0 :(得分:3)
WHERE
不能用于分组项目(例如count(*)
)而HAVING
可以使用。
您可以参考WHERE vs HAVING问题了解更多详情,
您必须使用having
->having('total', '>', 100)
您可以选择使用havingRaw
->havingRaw('count(*) > 2500')
->havingRaw('total > 2500')
答案 1 :(得分:0)
您可以使用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;
});