您好我有两个表有多对多关系和一个联结表。 简而言之,具有不同属性的产品会增加价格。 让它更清楚我是产品和属性表。
+-------------+-----------+-------------------+
| product | attribute | attribute_product |
+-------------+-----------+-------------------+
| id | id | product_id |
| name | name | attribute_id |
| description | | attribute_value |
| price | | added_price |
+-------------+-----------+-------------------+
由于Laravel不支持多列主键,我希望attribute_product
表具有主键,当我调用$product->attribute->attach()
时,它会自动递增它,所以我可以执行以下操作:
+---------+----------------------+
| cart | cart_product |
+---------+----------------------+
| id | cart_id |
| user_id | attribute_product_id |
+---------+----------------------+
在我脑海中,我要为attribute_product
表制作一个模型并将其称为Item
,因此购物车可以有多个商品,我可以像$cart->items->groupBy('product_id')
那样展示它,所以我可以在用户的购物车中拥有它。
非常感谢任何解决方案或更好的建议。
答案 0 :(得分:0)
嗯,我想也许你并没有以正确的方式关注它。如果产品与属性之间存在belongsToMany
关系,那是因为产品可能具有多个属性而不是不同的产品。
在购物车中,您应添加产品,而不是产品的特定属性。例如:
我想要一个水瓶,但只有水,没有瓶子。
这没有任何意义,你不能在没有瓶子的情况下买一瓶水。在这种情况下,你将购买水,而不是水瓶,这应该是不同的产品,而不是同一种产品。
cart_product
表应该如下所示,只要没有令人信服的理由为什么它不能如此。
+---------+----------------------+
| cart | cart_product |
+---------+----------------------+
| id | cart_id |
| user_id | product_id |
+---------+----------------------+