dimanche 16 mai 2021

i need pagination with sortBy in laravel

I have 3 tables products, prices, cats.

I need to filter product by cats and sort by price but I have a problem:

this code work very well but needs pagination.

$products = Product::with('photo', 'price', 'brand')
    ->whereHas('cats', function ($q) use ($cat) {
        $q->where('cat_id', $cat->id);
    })
    ->get()
    ->sortByDesc(function($query) {
        return $query->price->price;
    });

at first I did it like this:

$products = Product::with('photo', 'price', 'brand')
    ->whereHas('cats', function ($q) use ($cat) {
        $q->where('cat_id', $cat->id);
    })
    ->paginate($page)
    ->sortByDesc(function ($query) {
        return $query->price->price;
    });

but links() did not work.

After i did it like this:

$products = Product::with('photo', 'price', 'brand')
    ->whereHas('cats', function ($q) use ($cat){
        $q->where('cat_id', $cat->id);
    })
    ->paginate($page);

$products->setCollection(
    $products->sortBy(function ($query) {
        return $query->price->id;
    })
);

but sortBy does not work.

so I can't use orderBy() by join prices table

because when I do it I can show all products and I can't filter product by categories

my mind does not work, if someone can to help me, I will be very grateful



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire