Search code examples
mysqllaravellaravel-query-builder

How to exclude numbers from a count using Laravel Query Builder?


I can't exclude the number One and Two from my count... I used whereNotIn but didn't work, why?

$data = DB::table('incidencias')
   ->select(DB::raw('empresa as empresa'), DB::raw('count(*) as number'))
   ->whereNotIn('empresa', ['', 1, 2])
   ->orderBy('number', 'desc')
   ->groupBy('empresa')
   ->get();

Solution

  • Because what you want to exclude is the count result of empresa, not empresa,

    Use havingRaw() like this:

    $data = DB::table('incidencias')
       ->select(DB::raw('empresa as empresa'), DB::raw('count(*) as number'))
       ->where('empresa', '!=', '')
       ->groupBy('empresa')
       ->havingRaw('number NOT IN (1,2)')
       ->orderBy('number', 'desc')
       ->get();