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
相关产品推荐
相关产品推荐

