Existe-t-il un moyen de "limiter" le résultat avec ELOQUENT ORM de Laravel?
SELECT * FROM `games` LIMIT 30 , 30
Et avec Eloquent?
Existe-t-il un moyen de "limiter" le résultat avec ELOQUENT ORM de Laravel?
SELECT * FROM `games` LIMIT 30 , 30
Et avec Eloquent?
Réponses:
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();
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
Nous pouvons utiliser LIMIT comme ci-dessous:
Model::take(20)->get();
take
est juste un alias de limit
. Voir github.com/laravel/framework/blob/5.7/src/Illuminate/Database/… .
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();