我有三个表products
、prices
、cats
。
我需要用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);