php - 产品具有属性(变体)数据库设计?

标签 php mysql laravel web database-design

您好,我有两个具有多对多关系的表和一个联结表。 简而言之,具有不同属性的产品也随之增加了价格。 为了更清楚地说明我是产品和属性表。

+-------------+------------+----------------- --+ |产品 |属性|属性产品 | +------------------------+------------+--------------------+ |编号 |编号 |产品 ID | |名称 |名称 |属性 ID | |描述 | |属性值 | |价格| |已添加价格 | +------------+------------+--------------------+

由于 Laravel 不支持多列主键,我希望 attribute_product 表有一个主键,当我调用 $product->attribute->attach() 它会自动增加它,所以我可以执行以下操作:

+---------+----------------------+ |购物车 |购物车产品 | +---------+--------------------+ |编号 |购物车 ID | |用户 ID |属性产品 ID | +---------+----------------------+

在我的脑海中,我将为attribute_product表创建一个模型,并将其命名为Item,因此购物车可以有多个项目,我可以将其显示为$cart->items->groupBy('product_id') 这样我就可以将所有内容放入用户的购物车中。

非常感谢任何解决方案或更好的建议。

最佳答案

嗯,我认为也许你没有以正确的方式关注它。如果您有belongsToMany 产品属性之间的关系,是因为一个产品可能具有多个属性,而不是不同的产品

在您的购物车中,您应该添加产品,而不是产品的特定属性。例如:

I want a water bottle, but only the water, without the bottle.

这没有道理,没有瓶子就买不到水瓶。在这种情况下,您将购买水,而不是水瓶,这应该是不同的产品,而不是同一个产品。

cart_product表格应该看起来像这样,只要没有令人信服的理由不能如此。

 +---------+----------------------+
 |  cart   |     cart_product     |
 +---------+----------------------+
 | id      | cart_id              |
 | user_id | product_id           |
 +---------+----------------------+

关于php - 产品具有属性(变体)数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40605728/

相关文章:

php - Laravel 关系结构

php - 在 Windows 上使用 SWIG 编译 PHP 扩展

PHP XMLReader 读取、编辑 Node 、写入 XMLWriter

mysql - sqoop merge-key 创建多个部分文件而不是一个不符合使用 merge-key 目的的文件

mysql - SQL 复合查询 if-else 或 Case 语句

php - 在 PHP 中使表彼此相邻显示

MySQL 字符串位置和子串排序

mysql - 获取belongsToMany关联中的最后一条记录

php - 使用 Laravel 插入带有句点的表(有 Blob )

Laravel 分页 per_page/limit 未添加到 nextPageUrl