Gibt es eine Möglichkeit, das Ergebnis mit ELOQUENT ORM of Laravel zu „begrenzen“?

135

Gibt es eine Möglichkeit, das Ergebnis mit ELOQUENT ORM of Laravel zu "begrenzen"?

 SELECT * FROM  `games` LIMIT 30 , 30 

Und mit Eloquent?

Natan Shalva
quelle

Antworten:

241

Erstellen Sie ein Spielmodell, das Eloquent erweitert, und verwenden Sie Folgendes:

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

take()Hier werden 30 Datensätze abgerufen und skip()hier werden 30 Datensätze versetzt.


In neueren Laravel-Versionen können Sie außerdem Folgendes verwenden:

Game::limit(30)->offset(30)->get();
Muhammad Usman
quelle
Darf ich Sie bitten, sich hier eine Laravel ORM-bezogene Frage anzusehen : stackoverflow.com/questions/59956706/… ?
Istiaque Ahmed
17

Wenn Sie Ergebnisse paginieren möchten , verwenden Sie den integrierten Paginator . Er funktioniert hervorragend!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
fregante
quelle
3
Das ist wirklich erstaunlich! Mit Bootstrap benötigen Sie buchstäblich nur $ games = Game :: paginate (30) in Ihrem Controller und {{$ games-> links ()}} in Ihrer Ansicht ... er kümmert sich um alles. Liebender Laravel!
David_Nash
0

Wir können es auch folgendermaßen verwenden

Nur zuerst zu bekommen

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

Um durch Limit und Offset zu kommen

$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
quelle