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

问题描述 投票:1回答:1

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

产品

  • id

  • 名称

材料

  • id

  • 名称

单位

  • id

  • 名称

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

material_product

  • material_id

  • product_id

material_unit

  • material_id

  • unit_id

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

例如,如果Product-AAluminum作为素材之一,并且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

  • unique([material_id,unit_id)]

或者我可以将material_product数据透视表中的material_unit数据透视表中的id用作额外字段吗?

或者这是在Laravel中建立这种关系的更好方法吗?我不知道如何正确执行此操作,我们将不胜感激。

谢谢

laravel eloquent many-to-many
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.