Есть ли способ «ограничить» результат с помощью ELOQUENT ORM от Laravel?
SELECT * FROM `games` LIMIT 30 , 30
А с Eloquent?
Есть ли способ «ограничить» результат с помощью ELOQUENT ORM от Laravel?
SELECT * FROM `games` LIMIT 30 , 30
А с Eloquent?
Ответы:
Создайте модель Game, которая расширяет Eloquent, и используйте это:
Game::take(30)->skip(30)->get();
take()
здесь будет 30 записей, а skip()
здесь будет 30 записей.
В последних версиях Laravel вы также можете использовать:
Game::limit(30)->offset(30)->get();
Если вы хотите разбить результаты на страницы, используйте встроенный пагинатор , он отлично работает!
$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
Мы можем использовать LIMIT как ниже:
Model::take(20)->get();
take
это просто псевдоним limit
. См. Github.com/laravel/framework/blob/5.7/src/Illuminate/Database/… .
Также мы можем использовать его следующими способами
Чтобы получить только первый
$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();