laravel 5种搜索条件商品列表

一、商品列表

1.1 创建商品列表路由

    // 商品列表
    $api->get('goods', [GoodsController::class, 'index']);

在这里插入图片描述


1.2 创建商品列表方法

    /**
     * 商品列表
     */
    public function index(Request $request) {

        // 分页搜索条件
        $title = $request->query('title'); 

        // 搜索条件分类
        $category_id = $request->query('category_id'); 

        // 销量排序
        $sales = $request->query('sales'); 

        // 价格排序
        $price = $request->query('price'); 

        // 评论排序
        $comments_count = $request->query('comments_count'); 

        // 商品的分页数据
        $goods = Good::select('id', 'title', 'price', 'cover', 'category_id', 'sales', 'updated_at')
                ->where('is_on', 1) // 必须上架
                ->when($title, function ($query) use ($title) {
                    $query->where('title','like',"%{$title}%"); // 标题模糊搜索
                })
                ->when($category_id, function ($query) use ($category_id) {
                    $query->where('category_id',$category_id); // 分类搜索
                })
                ->when($sales == 1, function ($query) use ($sales) {
                    $query->orderBy('sales', 'desc'); // 销量 desc从大到小
                })
                ->when($price == 1, function ($query) use ($price) {
                    $query->orderBy('price', 'desc'); // 价格 desc从大到小
                })
                ->withCount('comments')  // 多少人评论字段
                ->when($comments_count == 1, function ($query) use ($comments_count) {
                    $query->orderBy('comments_count', 'desc'); // 评论 desc从大到小
                })
                ->orderBy('updated_at', 'desc') // 默认排序1以更新时间
                // ->paginate(20); // 每页20条
                ->simplePaginate(20); // 简单的分页查询,不包括links 上一页下一页了

        // 推荐商品
        $recommend_goods = Good::select('id', 'title', 'price', 'cover') // 商品推荐只需要id,标题,价格,封面,多少人评论字段
                ->where('is_on', 1) // 必须上架
                ->where('is_recommend', 1) // 必须推荐
                ->withCount('comments')  // 多少人评论字段
                ->inRandomOrder()
                ->take(10)
                ->get();

        // 分类数据
        $categories = cache_category();


        return $this->response->array([
            'goods' => $goods,
            'recommend_goods' => $recommend_goods,
            'categories' => $categories,
            
        ]);
    }

在这里插入图片描述
我们可以看到商品列表的搜索条件是比较多的:

1、标题搜索条件
2、分类搜索条件
3、销量排序搜索条件
4、价格排序搜索条件
5、评论排序搜索条件

默认就以商品更新日期排序。


1.3 测试效果

1、以标题搜索条件

在这里插入图片描述


2、分类搜索条件
在这里插入图片描述


3、销量排序搜索条件
在这里插入图片描述


4、价格排序搜索条件
在这里插入图片描述


5、评论排序搜索条件
在这里插入图片描述

可以看到测试都行,甚至几个条件都可以一起写。

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值