มีวิธี "จำกัด " ผลลัพธ์ด้วย ELOQUENT ORM ของ Laravel หรือไม่?


คำตอบ:


245

สร้างโมเดลเกมที่ขยายความเก่งและใช้สิ่งนี้:

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

take()ที่นี่จะได้รับ 30 ระเบียนและskip()ที่นี่จะหักล้าง 30 ระเบียน


ใน Laravel เวอร์ชันล่าสุดคุณยังสามารถใช้:

Game::limit(30)->offset(30)->get();

ฉันขอให้คุณดูคำถามที่เกี่ยวข้องกับ Laravel ORM ได้ที่นี่: stackoverflow.com/questions/59956706/… ?
Istiaque Ahmed

17

หากคุณกำลังมองไปสู่ผลลัพธ์ที่เลขหน้าให้ใช้แบบบูรณาการpaginatorก็ทำงานได้ดี!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages

4
นี่มันน่าทึ่งมาก! เมื่อใช้ bootstrap รหัสทั้งหมดที่คุณต้องการคือ $ games = Game :: paginate (30) ในคอนโทรลเลอร์ของคุณและ {{$ games-> links ()}} ในมุมมองของคุณ ... ซึ่งจะดูแลทุกอย่าง รัก Laravel!
david_nash

17

เราสามารถใช้ LIMIT เหมือนร้อง:

Model::take(20)->get();

ดูเหมือนว่าคุณกำลังใช้ Take และไม่ จำกัด
twigg

2
ในกรณีนี้takeเป็นเพียงนามแฝงlimitของ ดูgithub.com/laravel/framework/blob/5.7/src/Illuminate/Database/...
Xartrick

0

นอกจากนี้เราสามารถใช้วิธีต่อไปนี้

ให้ได้ก่อนเท่านั้น

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

เพื่อให้ได้ตามขีด จำกัด และชดเชย

$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();
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.