【问题标题】:Is it possible to create a has many relationship between a pivot table and another table?是否可以在数据透视表和另一个表之间创建一个多关系?
【发布时间】:2019-04-20 05:24:18
【问题描述】:

有一个名为order_product 的数据透视表,如下所示:

order_id | product_id | quantity | price
1          2            3          1500

我需要为每个 order_product 添加一个序列号,但这是不可能的,因为有一个 number 列并且每个产品都有自己的序列号。

解决此问题的最佳方法是什么?

像这样向order_product 表添加一个ID 是否是个好主意:

id | order_id | product_id | price
1    6          2            1500

然后像这样创建另一个名为serials 的表?:

id | order_product_id | serial
1    1                  6545154
2    1                  123
3    1                  456

如果没有其他办法,我可以用 Eloquent 之类的 ORM 来实现吗?

【问题讨论】:

  • serial属于每个order_product还是product?
  • @Zartosht 序列号属于每个订单产品,每个售出的产品都有自己的序列号
  • 为什么不在 order_product 表中添加一个名为 serial 的额外列?
  • @Zartosht 因为有一个数量字段所以如果数量为2表示这一行代表两个产品,它有两个序列号
  • @Ali 你能告诉我产品型号和系列型号之间的关系是什么吗?

标签: mysql database laravel eloquent pivot


【解决方案1】:

创建一个名为OrderProducts(或任何你想要的)的新模型,在这个模型中添加这个受保护的字段:

protected $table = "order_product";

在为名为@9​​87654323@的字段添加强制转换后:

protected $casts = [
        "serials" => "array"
    ];

现在您的序列应该是已售产品序列的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-24
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多