194 votes

Laravel Eloquent groupBy() AND renvoie également le nombre de chaque groupe.

J'ai un tableau qui contient, entre autres colonnes, une colonne de versions de navigateurs. Et je veux simplement savoir, à partir de l'ensemble des enregistrements, combien il y a de versions de chaque type de navigateur. J'ai donc besoin d'obtenir quelque chose comme ceci : Total des enregistrements : 10 ; Internet Explorer 8 : 2 ; Chrome 25 : 4 ; Firefox 20 : 4 (le total est de 10).

Voici mes deux pence :

$user_info = Usermeta::groupBy('browser')->get();

Bien sûr, cela ne contient que les 3 navigateurs et non le nombre de chacun. Comment puis-je faire cela ?

371voto

Antonio Carlos Ribeiro Points 30208

Cela fonctionne pour moi :

$user_info = DB::table('usermetas')
                 ->select('browser', DB::raw('count(*) as total'))
                 ->groupBy('browser')
                 ->get();

54voto

carlituxman Points 982

Cela fonctionne pour moi (Laravel 5.1) :

$user_info = Usermeta::groupBy('browser')->select('browser', DB::raw('count(*) as total'))->get();

43voto

Diogo Gomes Points 1521

Merci Antonio,

Je viens d'ajouter le lists à la fin pour qu'il ne renvoie qu'un seul tableau avec la clé et le nombre :

Laravel 4

$user_info = DB::table('usermetas')
    ->select('browser', DB::raw('count(*) as total'))
    ->groupBy('browser')
    ->lists('total','browser');

Laravel 5.1

$user_info = DB::table('usermetas')
    ->select('browser', DB::raw('count(*) as total'))
    ->groupBy('browser')
    ->lists('total','browser')->all();

Laravel 5.2+.

$user_info = DB::table('usermetas')
    ->select('browser', DB::raw('count(*) as total'))
    ->groupBy('browser')
    ->pluck('total','browser');

37voto

Adam Kozlowski Points 1709

Si vous voulez obtenir la collection, groupBy et count :

$collection = ModelName::groupBy('group_id')
->selectRaw('count(*) as total, group_id')
->get();

A la vôtre !

13voto

Boris Tetřev Points 191
  1. Ouvrir config/database.php
  2. Trouvez strict clé à l'intérieur mysql paramètres de connexion
  3. Définissez la valeur sur false

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X