Laravel 数据库过滤器总数大于 n

Voj*_*jta 2 php sql laravel

当总数大于 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();
Run Code Online (Sandbox Code Playgroud)

Jit*_*ose 7

WHERE不能用于分组项目(例如count(*)),而 HAVING可以。您可以参考WHERE vs HAVING问题以了解更多详细信息,

你必须使用 having

->having('total', '>', 100)
Run Code Online (Sandbox Code Playgroud)

可选地,在您的情况下,您可以使用 haveRaw

->havingRaw('count(*) > 2500')
->havingRaw('total > 2500')
Run Code Online (Sandbox Code Playgroud)

参考:https : //laravel.com/docs/5.6/queries