Есть ли способ «ограничить» результат с помощью ELOQUENT ORM от Laravel?

135

Есть ли способ «ограничить» результат с помощью ELOQUENT ORM от Laravel?

 SELECT * FROM  `games` LIMIT 30 , 30 

А с Eloquent?

Натан Шалва
источник

Ответы:

241

Создайте модель Game, которая расширяет Eloquent, и используйте это:

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

take()здесь будет 30 записей, а skip()здесь будет 30 записей.


В последних версиях Laravel вы также можете использовать:

Game::limit(30)->offset(30)->get();
Мухаммед Усман
источник
могу ли я попросить вас взглянуть на вопрос, связанный с Laravel ORM, здесь: stackoverflow.com/questions/59956706/… ?
Истак Ахмед
17

Если вы хотите разбить результаты на страницы, используйте встроенный пагинатор , он отлично работает!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
fregante
источник
3
Это действительно потрясающе! Используя bootstrap, буквально весь код, который вам нужен, это $ games = Game :: paginate (30) в вашем контроллере и {{$ games-> links ()}} на ваш взгляд ... он позаботится обо всем. Любящий Ларавел!
david_nash
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();
Кришнамурты Ачарья
источник