【发布时间】:2018-12-13 23:27:49
【问题描述】:
我有两张桌子。 “产品”和“折扣”。 然后我为多对多关系创建一个连接表'discount_product'。到目前为止一切顺利。
现在,如果我想为所有产品提供折扣,我必须为我拥有的尽可能多的产品插入连接表。这意味着拥有 10000 多种产品我必须在连接表中插入 10000 多行以获得一个折扣?这只是一个折扣!如果我有 1000 个呢?
当我在 'Discounts' 表中只有一列 'product_ids' 和类似 '1|2|4|7|23|.. .'(或 '*' 表示 'belongs to all')然后编写一小段 PHP 代码来检查折扣是属于所有产品还是属于某些产品。我知道这是错误的做法。那么有没有更好的方法来正确地做到这一点?
结构:
**products**
id
description
price
**discounts**
id
procent
value
**discount_product**
product_id
discount_id
【问题讨论】:
-
你有一些代码、Controller、Model、Repo、View吗?
-
还没有,我只是将一个站点迁移到 Laravel 并希望以正确的方式进行。我只是想到一个概念。但实际上没关系,我肯定会拥有产品和折扣的所有模型和控制器以及迁移,但这并不能解决问题。
-
一个产品可以有超过1个折扣?
-
是的,当然。例如,可以有适用于一种或多种或所有产品的个人折扣。
-
为什么是多对多? 1 个产品有 1 个折扣,如果它的 0 或 10 或 20% 折扣,它只有 1 个折扣,所以只有 1 个一个枢轴记录。因此,每个产品始终通过枢轴有 1 个“连接”。如果某些产品,例如 100 必须是全部 20% 的折扣,您必须在控制器和存储库中执行此操作。多次更新。希望你能理解。
标签: database laravel many-to-many relationships