Laravel Filitreli Arama
-
Herkese selam. Laravelde /blabla/ gibi yapıları yapabiliyorum ancak /blog/listele?orderBy=desc gibi link yapısı nasıl kurabilirim? yardımcı olursanız çok sevinirim.
-
$order = $request->query('orderBy', false)
$r = Blog::all()
if($order){
$r = $r->orderBy($order);
}
edit ya da daha temizi:
$r = Blog::all()->orderBy($request->query('orderBy', 'id')) // get te order by yoksa direkt id dondursun, id ye gore siralasin
yolbulucu tarafından 28/Ağu/20 23:53 tarihinde düzenlenmiştir -
$blogs = Blog::all(); $blogs = $request->has('orderBy') ? $blogs->orderBy('id', $request->orderBy) : $blogs->orderBy('created_at', 'desc'); return $blogs->get();
default olarak bir order by ayarlamak istiyorsan bu şekilde yapabilirsin.
https://laravel.com/docs/7.x/queries#ordering-grouping-limit-and-offset
Collection kullanıyorsan;
Collection'larda sortBy ve sortByDesc gibi bişey olması lazım.
https://laravel.com/docs/7.x/collections#method-sortbydesc
Laravel'in dökümanı harikadır. Hatta gördüklerim arasında en iyilerinden. Oradan herşeyi bulabilirsin.
neverland tarafından 29/Ağu/20 00:28 tarihinde düzenlenmiştir -
when methodu kullanmanı tavsiye ederim hocam. Aşağıya ufak bir kod örneği bırakıyorum. Eğer bu yapıyı client tarafında yapacaksaınız gelen verinin ASC veya DESC olma zorunluluğunu koymanı tavsiye ederim.
<?php public function index(Request $request) { $orderBy = $request->get("orderBy"); $blogs = Blog::when($orderBy, function ($query) use ($orderBy) { return $query->orderBy("id", $orderBy) })->paginate(100); //... }
-
vuuu ne kadar laravelci varmış maşallah :)