¿Hay alguna manera de "limitar" el resultado con ELOQUENT ORM de Laravel?

135

¿Hay alguna manera de "limitar" el resultado con ORM ELOCUENTE de Laravel?

 SELECT * FROM  `games` LIMIT 30 , 30 

¿Y con Eloquent?

Natan Shalva
fuente

Respuestas:

241

Cree un modelo de juego que extienda Eloquent y use esto:

Game::take(30)->skip(30)->get();

take()Aquí obtendrá 30 registros y skip()aquí se compensará a 30 registros.


En versiones recientes de Laravel también puede usar:

Game::limit(30)->offset(30)->get();
Muhammad Usman
fuente
¿Puedo pedirle que eche un vistazo a una pregunta relacionada con ORM de Laravel aquí: stackoverflow.com/questions/59956706/… ?
Istiaque Ahmed
17

Si está buscando paginar resultados, use el paginador integrado , ¡funciona muy bien!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
fregante
fuente
3
¡Esto es realmente asombroso! Usando bootstrap, literalmente todo el código que necesita es $ games = Game :: paginate (30) en su controlador y {{$ games-> links ()}} en su vista ... se encarga de todo. Amar a Laravel!
david_nash
0

Además, podemos usarlo de la siguiente manera

Para llegar solo primero

 $cat_details = DB::table('an_category')->where('slug', 'people')->first();

Para llegar por límite y compensación

$top_articles = DB::table('an_pages')->where('status',1)->limit(30)->offset(0)->orderBy('id', 'DESC')->get();
$remaining_articles = DB::table('an_pages')->where('status',1)->limit(30)->offset(30)->orderBy('id', 'DESC')->get();
Krishnamoorthy Acharya
fuente