Có cách nào để giới hạn phạm vi kết quả với ELOQUENT ORM của Laravel không?


135

Có cách nào để "giới hạn" kết quả với ELOQUENT ORM của Laravel không?

 SELECT * FROM  `games` LIMIT 30 , 30 

Và với Eloquent?

Câu trả lời:


241

Tạo mô hình Trò chơi mở rộng Eloquent và sử dụng:

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

take()ở đây sẽ nhận được 30 hồ sơ và skip()ở đây sẽ bù vào 30 hồ sơ.


Trong các phiên bản gần đây của Laravel, bạn cũng có thể sử dụng:

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

Tôi có thể yêu cầu bạn xem một câu hỏi liên quan đến ORM của Laravel ở đây không: stackoverflow.com/questions/59956706/ .
Istiaque Ahmed

17

Nếu bạn đang tìm kiếm để kết quả paginate, sử dụng tích hợp paginator , nó hoạt động tuyệt vời!

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

3
Đây là nghiêm túc tuyệt vời! Sử dụng bootstrap, nghĩa đen là tất cả mã bạn cần là $ games = Game :: pagination (30) trong bộ điều khiển của bạn và {{$ games-> links ()}} trong chế độ xem của bạn ... nó sẽ xử lý mọi thứ. Ấu trùng yêu thương!
david_nash


0

Ngoài ra, chúng ta có thể sử dụng nó theo những cách sau

Để chỉ nhận đầu tiên

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

Để có được theo giới hạn và bù đắp

$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();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.