laravel elocuente: cómo obtener un recuento de filas de un -> get ()

2 minutos de lectura

avatar de usuario
JP Fomentar

Tengo muchos problemas para descubrir cómo usar esta colección para contar filas.

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

Yo he tratado adding->count() pero no funcionó. he intentado hacer count($wordlist). No estoy muy seguro de qué hacer sin necesitar una segunda solicitud como a->count() método.

avatar de usuario
Tomas Kim

La respuesta ha sido actualizada

count es un método de colección. El generador de consultas devuelve una matriz. Entonces, para obtener el conteo, solo lo contaría como lo haría normalmente con una matriz:

$wordCount = count($wordlist);

Si tiene un modelo de lista de palabras, puede usar Eloquent para obtener una Colección y luego usar la Colección. count método. Ejemplo:

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

Hay/hubo una discusión sobre cómo hacer que el generador de consultas devuelva una colección aquí: https://github.com/laravel/framework/issues/10478

Sin embargo, a partir de ahora, el generador de consultas siempre devuelve una matriz.

Editar: como se vinculó anteriormente, el generador de consultas ahora devuelve una colección (no una matriz). Como resultado, lo que JP Foster intentaba hacer inicialmente funcionará:

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

Sin embargo, como lo indica Leon en los comentarios, si todo lo que desea es el conteo, consultarlo directamente es mucho más rápido que obtener una colección completa y luego obtener el conteo. En otras palabras, puedes hacer esto:

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

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

  • Es más rápido acceder a count() directamente con una cláusula where que devolver la colección completa. Si esto fuera un recuento de toda su tabla de usuarios, por ejemplo, podría devolver 1 millón de resultados solo para contarlos, y eso consumiría muchos recursos.

    – León

    6 de enero de 2019 a las 10:36

  • Para mí, el generador de consultas da el conteo 1 incluso si hay más resultados. Usando el mismo queryBuilder, devuelvo otros resultados.

    – Darius.V

    6 sep 2021 a las 13:49

  • funciona como se esperaba con db:table

    –Loganathan Natarajan

    23/09/2021 a las 18:42

avatar de usuario
Parth Kharecha

Obtener directamente un recuento de filas

usando elocuente

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

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

Uso del generador de consultas

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

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

  • Esto debería estar en la cima

    – princebillyGK

    7 de junio de 2020 a las 4:00

  • Elocuente es más gracioso

    – Código para la vida

    3 oct 2020 a las 10:30

Es mejor acceder al conteo con el método de conteo de laravels

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

o

$count = Model::count();

Además, puede obtener todos los datos y contarlos en el archivo blade. por ejemplo:

tu código en el controlador

$posts = Post::all();
return view('post', compact('posts'));

su código en el archivo blade.

{{ $posts->count() }}

finalmente, puedes ver el total de tus publicaciones.

¿Ha sido útil esta solución?