Laravel(且不仅限于)多对多关系属于所有人

时间:2018-07-05 13:01:45

标签: database laravel many-to-many relationships

我有两个桌子。 “产品”和“折扣”。 然后,我为多对多关系创建一个联接表'discount_product'。到目前为止一切顺利。

现在,如果我想让折扣属于所有产品,那么我必须在联接表中插入我所拥有的所有产品。这意味着拥有10000+种产品,我必须为联接表插入10000+行以获得一种折扣吗?那只是一个折扣!如果我有1000怎么办?

当我在“折扣”表中只有一列“ product_ids”和类似“ 1 | 2 | 4 | 7 | 23 |”的内容时,这迫使我回到旧的(错误的)方式。 ”(或“ *”表示“属于所有”),然后制作一小段PHP代码以检查折扣是否属于全部或某些产品。我知道这样做是错误的方式。那么有没有更好的方法来正确地做到这一点?

结构:

**products**
  id 
  description
  price

**discounts**
  id
  procent
  value

**discount_product**
  product_id
  discount_id

1 个答案:

答案 0 :(得分:0)

我建议尝试更改一些业务逻辑。

  • 如果折扣不在discount_product中,则表示该折扣适用于所有产品。
  • 如果折扣在discount_product中,则意味着它仅适用于特定产品。
  • 如果您需要确保折扣不适用于任何产品,请在折扣中添加字段is_active。

这只是我的想法。

我认为有时由于优化而对数据库进行非规范化很有用,我会按照您在product_ids字段中建议的那样进行操作。