首页 > 解决方案 > 从数据透视表创建 hasMany 或一对多关系 - Laravel

问题描述

我有 3 张桌子:

公司

产品

图片

现在,公司产品多对多的关系。

意思是,1 家公司可以有很多产品,一个产品可以属于多个公司。因此,我有一个名为Companies_products的数据透视表,其中包含数据透视表或附加列,例如:价格、折扣、状态等...

注意:产品表仅代表通用数据,也就是说,它没有价格、状态等...产品仅与数据透视列一起完成,因为它使每个公司的产品都独一无二。

一切都很好,直到这里。现在因为数据透视表代表每个公司的独特产品列。我还想将产品图像表附加到这个数据透视表。这意味着,我的结构将是每个枢轴行 hasMany product_images。

但是在 Laravel 中,我猜数据透视表没有模型,不鼓励这样做。那么如何用数据透视表实现has-Many呢?

或者有什么更好的解决方案来构建我的表格或数据?

总之,

我有 1 个公司表和 1 个产品表(唯一)。

公司通过添加额外的数据和图像(数组)来创建最终产品。我可以处理作为数据透视列但不能作为图像的额外数据(在这种情况下是图像数组。我不能直接在产品表级别有一对多,因为每个公司都会向其中添加一个带有额外数据的产品。

标签: phpmysqllaravellaravel-5database-normalization

解决方案


您可以为数据透视表定义模型。它包含在文档的定义自定义中间表模型中。为此,您的模型的类应该扩展:

Illuminate\Database\Eloquent\Relations\Pivot

代替

Illuminate\Database\Eloquent\Model.


推荐阅读