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

Laravel 6 视图中如何使用Group By实现按SKU分组展示产品

问题原因

你混淆了**SQL查询构造器的groupBy和Laravel集合的groupBy**的用法:

  • 查询构造器的groupBy对应SQL原生的GROUP BY子句,作用是做数据聚合统计,每个分组仅返回1条记录,完全不满足你“同SKU的所有产品归为一组”的需求,也是你返回结果异常的核心原因。
  • 你模板里的循环逻辑也存在变量引用错误,内层循环误用了外层分组变量,导致输出内容错误。

修复代码

控制器部分

先查询产品数据,再调用集合的groupBy方法完成分组:

// 先按条件查询产品并分页,再在PHP层面按sku分组
$products = Product::latest()->paginate(25);
$pro = $products->groupBy('sku');

如果你的分页单位是「SKU组」而非单条产品,需要调整写法:先对去重后的SKU做分页,再关联查询对应SKU下的所有产品即可。

Blade模板部分

修正变量引用,内层循环遍历当前SKU下的产品集合:

@foreach ($pro as $sku => $productsInSku)
<p>{{ $sku }}</p>
<ul class="list-unstyled">
    @foreach($productsInSku as $product)
    <li><a href="{{ route('admin.product.view', [$product->id]) }}">{{ $product->name }}</a></li>
    @endforeach
</ul>
@endforeach

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:21:04