我需要用laravel中的sortBy进行分页



我有三个表productspricescats

我需要用cats过滤product,用price排序,但我有一个问题:

这段代码运行得很好,但需要分页。

$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;
});

起初我是这样做的:

$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;
});

但CCD_ 7不起作用。

在我这样做之后:

$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;
})
);

但CCD_ 8不起作用。

所以我不能通过加入价格表来使用orderBy()

因为当我这样做的时候,我可以显示所有的产品,我不能按类别过滤产品

我的头脑不工作,如果有人能帮助我,我会非常感激

我相信你也可以做到:

Product::join('price', 'price.id', '=', 'photo.price_id')
->orderBy('price.price', 'asc')
->select('photo.*')
->paginate(10);

相关内容

  • 没有找到相关文章

最新更新