为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中使用 sortby 时不能使用分页

在 Laravel 中使用 sortby 时不能使用分页

PHP
青春有我 2022-07-22 09:28:30
我想获取产品并mutator attribute在我的情况下对其进行排序,它被称为price我搜索如何对其进行排序,发现我可以sortBy使用collection像那样private function search(){       return Product::with(['firstImage', 'category'])        ->sortBy('price');}它工作正常,但是当我尝试添加paginate时没有任何反应并且响应中没有分页private function search(){       return Product::with(['firstImage', 'category'])        ->paginate(9)->sortBy('price');}那么在这种情况下我该如何添加paginate?编辑price突变体public function getPriceAttribute(){    return $this->sell_price - (($this->discount * $this->sell_price) / 100);}
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

不幸的是,没有办法呼吁paginate()收集。您可以手动对收集结果进行分页或修改您的查询并使用addSelect或orderByRaw包含变异值:


use Illuminate\Support\Facades\DB;


Product::select('*', DB::raw('(sell_price - ((discount * sell_price) / 100)) AS price'))

        ->orderBy('price')

        ->paginate(9);

顺便说一句,如果您的折扣是一个常数值,我认为您将得到相同的结果来按sell_price列而不是price变异值排序,所以请尝试orderBy('sell_price')代替sortBy('price'):


Product::with(['firstImage', 'category'])

        ->orderBy('sell_price')

        ->paginate(9);

Laravel 文档:https ://laravel.com/docs/master/queries#ordering-grouping-limit-and-offset


查看完整回答
反对 回复 2022-07-22
?
噜噜哒

TA贡献1784条经验 获得超7个赞

您必须使用paginate(9)afterorderBy()函数。所以你必须像这样编辑第二个代码:


private function search()

{   

    return Product::with(['firstImage', 'category'])

        ->orderBy('price')->paginate(9);


}


查看完整回答
反对 回复 2022-07-22
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号