我有一个包含以下表格的数据库:
产品
id
名称
材料
id
名称
单位
id
名称
产品和物料表具有多对多关系,物料和单位表也具有多对多关系,所以这些是2个数据透视表
material_product
material_id
product_id
material_unit
material_id
unit_id
现在从这些关系中,我了解了产品中使用的物料,但是由于物料和单位表之间存在许多关系,因此我将如何找出每种物料的关联单位。
例如,如果Product-A
以Aluminum
作为素材之一,并且Aluminum
同时链接到单位表上的Kg
和Ton
。现在,当我访问Aluminum
时如何获得正确的Product-A
单位。
我可以在Laravel中做到这一点,而不是建立材料和产品关系,而是将产品表与material_unit数据透视表相关联
material_unit_product
product_id
material_unit_id
是的,那么material_unit表中也会有一个增量字段,它将用作id,因此material_unit表将是
material_unit
id
material_id
unit_id
unique([material_id,unit_id)]
或者我可以将material_product数据透视表中的material_unit数据透视表中的id用作额外字段吗?
或者这是在Laravel中建立这种关系的更好方法吗?我不知道如何正确执行此操作,我们将不胜感激。
谢谢
[经过大量搜索并将相同的问题发布到另一个论坛后,我知道没有这样的Laravel方法可以解决此问题。帮助我的是,我将数据透视表material_unit的id
用作material_product数据透视表中的外键,并且工作正常。使用withPivot
定义关系时,我只需要在模型中指定它即可。之后,我可以轻松获得material_unit数据透视表的id
,并使用该id
可以找到该特定产品的物料的相关单位。
[[RobBiermann对这个问题的评论以及来自Laracast论坛的bugsyha的评论也帮助我使用了这种方法。