Apakah ada cara untuk "membatasi" hasil dengan ELOQUENT ORM of Laravel?

137

Apakah ada cara untuk "membatasi" hasil dengan ORM SETARA Laravel?

 SELECT * FROM  `games` LIMIT 30 , 30 

Dan dengan Eloquent?

Natan Shalva
sumber

Jawaban:

245

Buat model Game yang memperluas Eloquent dan gunakan ini:

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

take()di sini akan mendapatkan 30 catatan dan di skip()sini akan mengimbangi menjadi 30 catatan.


Dalam versi Laravel terbaru, Anda juga dapat menggunakan:

Game::limit(30)->offset(30)->get();
Muhammad Usman
sumber
bolehkah saya meminta Anda untuk melihat pertanyaan terkait ORM Laravel di sini: stackoverflow.com/questions/59956706/… ?
Istiaque Ahmed
17

Jika Anda ingin memberi nomor hasil, gunakan paginator terintegrasi , itu berfungsi dengan baik!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
fregante
sumber
4
Ini benar-benar luar biasa! Menggunakan bootstrap, secara harfiah semua kode yang Anda butuhkan adalah $ games = Game :: paginate (30) di pengontrol Anda dan {{$ games-> links ()}} di tampilan Anda ... itu menangani semuanya. Mencintai Laravel!
david_nash
0

Juga, kita bisa menggunakannya dengan cara berikut

Untuk mendapatkan yang pertama

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

Untuk mendapatkan batas dan offset

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