Existe uma maneira de "limitar" o resultado com o ELOQUENT ORM do Laravel?

135

Existe uma maneira de "limitar" o resultado com o ELOQUENT ORM do Laravel?

 SELECT * FROM  `games` LIMIT 30 , 30 

E com Eloquent?

Natan Shalva
fonte

Respostas:

241

Crie um modelo de jogo que estenda o Eloquent e use isso:

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

take()aqui terá 30 registros e skip()aqui será compensado para 30 registros.


Nas versões recentes do Laravel, você também pode usar:

Game::limit(30)->offset(30)->get();
Muhammad Usman
fonte
posso pedir para você dar uma olhada em uma pergunta relacionada ao ORM do Laravel aqui: stackoverflow.com/questions/59956706/… ?
Istiaque Ahmed 28/01
17

Se você deseja paginar resultados, use o paginador integrado , ele funciona muito bem!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
fregante
fonte
3
Isso é realmente incrível! Usando o bootstrap, literalmente todo o código que você precisa é $ games = Game :: paginate (30) no seu controlador e {{$ games-> links ()}} na sua opinião ... ele cuida de tudo. Laravel amoroso!
David_nash
0

Além disso, podemos usá-lo das seguintes maneiras

Para obter apenas o primeiro

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

Para obter por limite e deslocamento

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