Das ist meins
$art = Article::where('id',$article)->firstOrFail();
$products = $art->products;
Ich möchte nur ein Limit "Produkt" nehmen. Dies ist der falsche Weg
$products = $art->products->offset($offset*$limit)->take($limit)->get();
Bitte helfen Sie mir!
Vielen Dank!
products()
anstelle vonproducts
. Und es wird funktionieren.skip
.Antworten:
skip = OFFSET $products = $art->products->skip(0)->take(10)->get(); //get first 10 rows $products = $art->products->skip(10)->take(10)->get(); //get next 10 rows
Aus Laravel Doc 5.2 https://laravel.com/docs/5.2/queries#ordering-grouping-limit-and-offset
In Laravel 5.3 können Sie schreiben ( https://laravel.com/docs/5.3/queries#ordering-grouping-limit-and-offset )
$products = $art->products->offset(0)->limit(10)->get();
quelle
Schnell:
Laravel hat eine schnelle Paginierungsmethode, paginate, die nur die Anzahl der pro Seite angezeigten Daten übergeben muss.
//use the paginate Book::orderBy('updated_at', 'desc')->paginate(8);
So passen Sie Paging an:
Sie können diese Methode
offset
verwenden:limit
,skip
, ,take
Offset , Limit: Wo beginnt die Offset-Einstellung, wodurch die abzufragende Datenmenge begrenzt wird?
Überspringen , Nehmen: Überspringen überspringt einige Daten und nimmt viele Daten
zum Beispiel:
Model::offset(0)->limit(10)->get(); Model::skip(3)->take(3)->get(); //i use it in my project, work fine ~ class BookController extends Controller { public function getList(Request $request) { $page = $request->has('page') ? $request->get('page') : 1; $limit = $request->has('limit') ? $request->get('limit') : 10; $books = Book::where('status', 0)->limit($limit)->offset(($page - 1) * $limit)->get()->toArray(); return $this->getResponse($books, count($books)); } }
quelle
Laravel haben eine eigene Funktion
skip
füroffset
undtake
fürlimit
. genau wie unten Beispiel einer Laravel-Abfrage: -Article::where([['user_id','=',auth()->user()->id]]) ->where([['title','LIKE',"%".$text_val."%"]]) ->orderBy('id','DESC') ->skip(0) ->take(2) ->get();
quelle
Sie können
skip
undtake
Funktionen wie folgt verwenden://
skip
sollte param als ganzzahliger Wert übergeben werden, um die Datensätze und den Startindex zu überspringen//
take
erhält einen ganzzahligen Wert, um die Nr. zu erhalten. von Datensätzen nach dem Start Index definiert durchskip
BEARBEITEN
Es tut uns leid. Ich wurde mit Ihrer Frage missverstanden. Wenn Sie so etwas wie Paginierung möchten,
forPage
funktioniert die Methode für Sie. Die forPage-Methode funktioniert für Sammlungen.REf: https://laravel.com/docs/5.1/collections#method-forpage
z.B
quelle
skip
Methode.Vielleicht das
$products = $art->products->take($limit)->skip($offset)->get();
quelle
Probieren Sie diesen Beispielcode aus:
$art = Article::where('id',$article)->firstOrFail(); $products = $art->products->take($limit);
quelle
$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]); $chunk = $collection->forPage(2, 3); $chunk->all();
quelle
Laravel 8 (Dies funktioniert für die Version 7.16)
https://laravel.com/docs/8.x/collections#method-take
quelle
Bitte versuchen Sie es so,
return Article::where('id',$article)->with(['products'=>function($products, $offset, $limit) { return $products->offset($offset*$limit)->limit($limit); }])
quelle