You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何实现展示与当前商品同分类的相关商品功能

随机排序的商品

你需要先获取到当前商品的关联分类ID,再通过whereHas方法筛选出同分类下的商品即可,以下是适配你现有代码逻辑的调整方案:

前提准备

你需要先查询到当前访问的商品实例:

// 从路由参数slug获取当前商品
$currentProduct = Product::where('slug', $slug)->firstOrFail();

方案1:适配商品多分类场景(和你现有categories多对多关联逻辑匹配)

如果商品支持关联多个分类,直接通过关联查询筛选属于当前商品任意一个分类的商品:

$productsLike = Product::with('categories')
    ->where('slug', '!=', $slug)
    // 筛选和当前商品有相同分类的商品
    ->whereHas('categories', function ($query) use ($currentProduct) {
        $query->whereIn('categories.id', $currentProduct->categories->pluck('id'));
    })
    ->inRandomOrder()
    ->take(4)
    ->get();

方案2:适配商品单分类场景

如果商品仅属于一个分类,且商品表有category_id字段存储所属分类ID,可以简化写法:

$productsLike = Product::with('categories')
    ->where('slug', '!=', $slug)
    ->where('category_id', $currentProduct->category_id)
    ->inRandomOrder()
    ->take(4)
    ->get();

补充说明

如果当前分类下的关联商品不足4个,可以额外补充随机商品兜底,避免出现推荐位空缺的情况。


内容的提问来源于stack exchange,提问作者Patryk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:45:04