如何在Laravel中从多对多关系访问数据

时间:2020-05-15 12:40:20

标签: laravel eloquent many-to-many

我有一个包含以下表格的数据库:

产品

  • id

  • 名称

材料

  • id

  • 名称

单位

  • id

  • 名称

产品和物料表具有许多关系,物料和单位表也具有许多关系,所以这些是2个数据透视表

material_product

  • material_id

  • product_id

material_unit

  • material_id

  • unit_id

现在从这些关系中,我了解了产品中使用的物料,但是由于物料和单位表之间存在许多关系,因此我将如何找出每种物料的关联单位。

例如,如果存在一个Product-A作为材料之一的Aluminum,并且Aluminum被链接到单元上的KgTon表。现在,当我访问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中建立这种关系的更好方法吗?我不知道如何正确执行此操作,我们将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

经过大量搜索并在另一个论坛上发布了相同的问题,我才知道没有这样的Laravel方法可以解决此问题。 帮助我的是,我使用枢纽分析表 material_unit id作为 material_product 枢纽表中的外键,它工作正常。我只需要在模型中使用withPivot定义关系时指定它即可。之后,我可以轻松地获取material_unit数据透视表的id并使用该id可以找到该特定产品的物料的相关单位。

RobBiermann 对这个问题的评论以及来自Laracast论坛的bugsyha的评论也帮助我使用了这种方法。