Czy istnieje sposób na „ograniczenie” wyniku za pomocą ELOQUENT ORM of Laravel?

135

Czy istnieje sposób na „ograniczenie” wyniku za pomocą ELOQUENT ORM of Laravel?

 SELECT * FROM  `games` LIMIT 30 , 30 

A z Eloquent?

Natan Shalva
źródło

Odpowiedzi:

241

Utwórz model gry, który rozszerza Eloquent i użyj tego:

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

take()tutaj dostaniesz 30 rekordów, a skip()tutaj wyrównanie do 30 rekordów.


W ostatnich wersjach Laravel możesz również użyć:

Game::limit(30)->offset(30)->get();
Muhammad Usman
źródło
czy mogę prosić o przyjrzenie się pytaniu związanemu z Laravel ORM tutaj: stackoverflow.com/questions/59956706/… ?
Istiaque Ahmed
17

Jeśli chcesz podzielić wyniki na strony, użyj zintegrowanego paginatora , działa świetnie!

$games = Game::paginate(30);
// $games->results = the 30 you asked for
// $games->links() = the links to next, previous, etc pages
fregante
źródło
3
To naprawdę niesamowite! Używając bootstrapa, dosłownie cały kod, którego potrzebujesz, to $ games = Game :: paginate (30) w twoim kontrolerze i {{$ games-> links ()}} w twoim widoku ... dba o wszystko. Kochający Laravel!
david_nash,
0

Możemy również użyć tego na następujące sposoby

Aby dostać tylko pierwszy

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

Aby uzyskać limit i przesunięcie

$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
źródło