我有一个包含以下表格的数据库:
产品
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
唯一([material_id,unit_id)]
或者我可以使用material_product数据透视表中material_unit数据透视表中的 id 作为额外字段吗?
这是在Laravel中建立这种关系的更好方法吗?我不知道如何正确执行此操作,我们将不胜感激。
谢谢
答案 0 :(得分:1)
经过大量搜索并在另一个论坛上发布了相同的问题,我才知道没有这样的Laravel方法可以解决此问题。
帮助我的是,我使用枢纽分析表 material_unit 的id
作为 material_product 枢纽表中的外键,它工作正常。我只需要在模型中使用withPivot
定义关系时指定它即可。之后,我可以轻松地获取material_unit数据透视表的id
并使用该id
可以找到该特定产品的物料的相关单位。
RobBiermann 对这个问题的评论以及来自Laracast论坛的bugsyha的评论也帮助我使用了这种方法。