一、商品列表
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的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。