首页 > 解决方案 > 当所有标签都在产品表中时,如何在 laravel 中显示产品表中的所有标签?

问题描述

这是一个电子商务项目,我将产品标签存储在产品表中。在数据库中,所有标签都以逗号分隔存储。但是如何使用 groupBy 显示所有标签?

这是我的数据库:

标签: mysqllaravele-commerce

解决方案


如果数据库被规范化,标签将在它们自己的表中。但既然你有这样的产品,我假设你得到的产品是这样的:

$products = Product::get();

如果是这样,您仍然可以通过使用一些收集方法来获取所有不同的标签。

$tags_en = $products->map(fn($product) => explode(',', $product->product_tag_en))
                    ->flatten()
                    ->unique()   // avoid repeating tags
                    ->sort()     // optional
                    ->values();

$tags_bn = $products->map(fn($product) => explode(',', $product->product_tag_bn))
                    ->flatten()
                    ->unique()   // avoid repeating tags
                    ->sort()     // optional
                    ->values();

推荐阅读