Laravel eloquent在数据库专栏中获得最常见的价值

use*_*932 3 mysql laravel eloquent laravel-5.4

从表中animals我在animal_name列中有以下值

cat dog cat 我想从中提取单词cat,因为它是该列中最受欢迎/常用的单词.如何使用laravel eloquent做到这一点?

pet*_*erm 12

雄辩:

App\Animal::select('name')
    ->groupBy('name')
    ->orderByRaw('COUNT(*) DESC')
    ->limit(1)
    ->get();
Run Code Online (Sandbox Code Playgroud)

输出:

=> Illuminate\Database\Eloquent\Collection {#711
     all: [
       App\Animal {#725
         name: "cat",
       },
     ],
   }

查询生成器也是如此:

DB::table('animals')
    ->select('name')
    ->groupBy('name')
    ->orderByRaw('COUNT(*) DESC')
    ->limit(1)
    ->get();
Run Code Online (Sandbox Code Playgroud)

输出:

=> Illuminate\Support\Collection {#734
     all: [
       {#738
         +"name": "cat",
       },
     ],
   }

有没有办法在同一个查询中获取"cat"计数?

当然有

App\Animal::select('name')
    ->selectRaw('COUNT(*) AS count')
    ->groupBy('name')
    ->orderByDesc('count')
    ->limit(1)
    ->get();
Run Code Online (Sandbox Code Playgroud)
=> Illuminate\Database\Eloquent\Collection {#711
     all: [
       App\Animal {#725
         name: "cat",
         count: 123
       },
     ],
   }