Existe-t-il un moyen de «limiter» le résultat avec ELOQUENT ORM de Laravel?

135

Existe-t-il un moyen de "limiter" le résultat avec ELOQUENT ORM de Laravel?

 SELECT * FROM  `games` LIMIT 30 , 30 

Et avec Eloquent?

Natan Shalva
la source

Réponses:

241

Créez un modèle de jeu qui étend Eloquent et utilisez ceci:

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

take()ici obtiendra 30 enregistrements et skip()ici compensera à 30 enregistrements.


Dans les versions récentes de Laravel, vous pouvez également utiliser:

Game::limit(30)->offset(30)->get();
Muhammad Usman
la source
puis-je vous demander de jeter un oeil à une question liée à Laravel ORM ici: stackoverflow.com/questions/59956706/… ?
Istiaque Ahmed le
17

Si vous cherchez à paginer les résultats, utilisez le paginateur intégré , cela fonctionne très bien!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
frégante
la source
3
C'est vraiment incroyable! En utilisant bootstrap, littéralement tout le code dont vous avez besoin est $ games = Game :: paginate (30) dans votre contrôleur et {{$ games-> links ()}} dans votre vue ... il s'occupe de tout. Aimer Laravel!
david_nash
0

En outre, nous pouvons l'utiliser de différentes manières

Pour obtenir seulement le premier

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

Pour obtenir par limite et décalage

$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
la source