web-dev-qa-db-fra.com

laravel éloquent: Comment obtenir un nombre de lignes à partir d'un -> get ()

J'ai beaucoup de mal à comprendre comment utiliser cette collection pour compter les lignes.

$wordlist = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)
                ->get();

J'ai essayé adding->count() mais je n'ai pas fonctionné. J'ai essayé de faire count($wordlist). Je ne sais pas vraiment quoi faire sans avoir besoin d'une deuxième requête en tant que méthode a->count().

38
JP Foster

La réponse a été mise à jour

count est une méthode Collection. Le générateur de requêtes renvoie un tableau. Donc, pour obtenir le nombre, vous devez simplement le compter comme vous le feriez normalement avec un tableau:

$wordCount = count($wordlist);

Si vous avez un modèle de liste de mots, vous pouvez utiliser Eloquent pour obtenir une collection, puis utiliser la méthode count de la collection. Exemple:

$wordlist = Wordlist::where('id', '<=', $correctedComparisons)->get();
$wordCount = $wordlist->count();

Il y a/était une discussion sur le fait que le générateur de requêtes retourne une collection ici: https://github.com/laravel/framework/issues/10478

Cependant, à partir de maintenant, le générateur de requêtes renvoie toujours un tableau.

Modifier: Comme indiqué ci-dessus, le générateur de requêtes renvoie désormais une collection (et non un tableau). En conséquence, ce que JP Foster essayait de faire initialement fonctionnera:

$wordlist = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)
            ->get();
$wordCount = $wordlist->count();

Cependant, comme indiqué par Leon dans les commentaires, si tout ce que vous voulez, c'est le nombre, alors l'interroger directement est beaucoup plus rapide que de récupérer une collection entière puis d'obtenir le nombre. En d'autres termes, vous pouvez le faire:

// Query builder
$wordCount = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)
            ->count();

// Eloquent
$wordCount = Wordlist::where('id', '<=', $correctedComparisons)->count();
73
Thomas Kim

Obtenez directement un nombre de lignes

en utilisant Eloquent

 //Useing Eloquent
 $count = Model::count();    

 //example            
 $count1 = Wordlist::count();

en utilisant le générateur de requêtes

 //Using query builder
 $count = \DB::table('table_name')->count();

 //example
 $count2 = \DB::table('wordlist')->where('id', '<=', $correctedComparisons)->count();
30
Terminal

Il est préférable d'accéder au dénombrement avec la méthode de dénombrement des larves

$count = Model::where('status','=','1')->count();

ou

$count = Model::count();
13
Rejneesh Raghunath