从数据透视表创建hasMany或一对多关系-Laravel

时间:2018-12-05 21:46:22

标签: php mysql laravel laravel-5 database-normalization

我有3张桌子:

公司

产品

图片

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

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

注意:“产品”表仅表示公共数据,即没有价格,状态等。产品仅包含数据透视列,因为这是每个公司唯一的产品。

一切都很好,直到这里。现在,由于数据透视表代表每个公司的唯一产品列。我还想将product-images表附加到此数据透视表。这意味着,我的结构将是每个枢轴行都有许多product_images。

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

还有其他更好的解决方案来构造我的表或数据吗?

总之,

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

公司通过添加额外的数据和图像(数组)来创建最终产品。我可以处理作为枢轴列的额外数据,但不能处理图像(在这种情况下为图像数组。在产品表级别上,我不能直接拥有1到1的数据,因为每个公司都向其中添加了具有额外数​​据的产品。

1 个答案:

答案 0 :(得分:0)

您可以为数据透视表定义模型。 Defining Custom Intermediate Table Models涵盖了这些文档。为此,您的模型的类应扩展:

Illuminate\Database\Eloquent\Relations\Pivot

代替

Illuminate\Database\Eloquent\Model