"public function index(Request $request)\n {\n // 创建一个查询构造器\n $builder = Product::query()->where('on_sale', true);\n // 判断是否有提交 search 参数,如果有就赋值给 $search 变量\n // search 参数用来模糊搜索商品\n if ($search = $request->input('search', '')) {\n $like = '%'.$search.'%';\n // 模糊搜索商品标题、商品详情、SKU 标题、SKU描述\n $builder->where(function ($query) use ($like) {\n $query->where('title', 'like', $like)\n ->orWhere('description', 'like', $like)\n ->orWhereHas('skus', function ($query) use ($like) {\n $query->where('title', 'like', $like)\n ->orWhere('description', 'like', $like);\n });\n });\n }\n\n // 是否有提交 order 参数,如果有就赋值给 $order 变量\n // order 参数用来控制商品的排序规则\n if ($order = $request->input('order', '')) {\n // 是否是以 _asc 或者 desc 结尾\n if (preg_match('/^(.+)(asc|desc)$/', $order, $m)) {\n // 如果字符串的开头是这 3 个字符串之一,说明是一个合法的排序值\n if (in_array($m[1], ['price', 'sold_count', 'rating'])) {\n // 根据传入的排序值来构造排序参数\n $builder->orderBy($m[1], $m[2]);\n }\n }\n }\n\n $products = $builder->paginate(16);\n\n return view('products.index', ['products' => $products]);\n }\n"def index\n # 创建一个查询构造器\n builder = Product.where(on_sale: true)\n # 判断是否有提交 search 参数,如果有就赋值给 search 变量\n # search 参数用来模糊搜索商品\n if params[:search].present?\n like = "%#{params[:search]}%"\n # 模糊搜索商品标题、商品详情、SKU 标题、SKU描述\n builder = builder.where("title LIKE ? OR description LIKE ? OR skus.title LIKE ? OR skus.description LIKE ?", like, like, like, like)\n end\n\n # 是否有提交 order 参数,如果有就赋值给 order 变量\n # order 参数用来控制商品的排序规则\n if params[:order].present?\n # 是否是以 _asc 或者 desc 结尾\n if match = params[:order].match(/^(.+)(asc|desc)$/)\n # 如果字符串的开头是这 3 个字符串之一,说明是一个合法的排序值\n if ['price', 'sold_count', 'rating'].include?(match[1])\n # 根据传入的排序值来构造排序参数\n builder = builder.order("#{match[1]} #{match[2]}")\n end\n end\n end\n\n @products = builder.paginate(page: params[:page], per_page: 16)\n\n render 'products/index'\nend

Laravel 商品列表页面代码 - 搜索、排序和分页

原文地址: https://www.cveoy.top/t/topic/pWwF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录