【问题标题】:Laravel eloquent for the combination of two tabelsLaravel 雄辩的两个表的组合
【发布时间】:2021-02-18 05:25:46
【问题描述】:

我是 laravel 新手并使用 laravel 8。我有以下表格,但我无法理解如何在它们之间建立雄辩的关系。

桌子 - 面料

id user_id name
1 1 fabric 1
2 1 fabric 2

表格 - 网格

id name
1 mesh 1
2 mesh 2

表格 - 设计器

id user_id mesh_id fabric_id name
1 1 1 1 designer 1
2 1 1 2 designer 2

我已经完成了所有的基本关系。每个设计师都有一种网眼和一种面料。设计师表中有一个独特的fabric_id 和mesh_id 组合,这意味着一种面料和一种网眼不能超过一排。现在我想要带有创建设计师的网格子列表的织物列表。基本上来自设计师表而不是 与(设计师)我想要与(网格)。请帮忙。提前谢谢你。

【问题讨论】:

  • 只是为了了解您的问题领域,您的设计师可以挑选多种面料,并且每种面料都可以有一个网格列表,对吗?
  • @AnuratChapanond 抱歉,解释不清楚。我已经更新了原始问题,仍然在这里粘贴。 - 每个设计师都有一种网眼和一种面料。设计师表中有一个独特的fabric_id 和mesh_id 组合,这意味着一种面料和一种网眼不能超过一行
  • @jeremykenedy 我已经建立了基本关系,这意味着我已经阅读了这个文档。
  • 知道了,那么你想要的是从设计师表中提取哪些织物与哪些网格一起使用?

标签: php laravel eloquent laravel-8


【解决方案1】:

看起来像多对多关系问题。看到这个documentation 有一个关于多对多关系的很好的例子。

【讨论】:

    【解决方案2】:

    织物和网状表之间存在多对多关系,设计师表是连接两个表的中间表。

    因此,您应该已经使用 belongsToMany(Mesh::class) 在您的织物表中建立了网格关系,并使用 belongToMany(Fabrics::class) 在您的网格表中建立了织物关系。

    您可以通过其关系检索所有织物及其相关网格。

    $fabrics = Fabrics::get()
    
    foreach($fabrics as $fabric) {
       $fabric->meshes
    }
    

    【讨论】:

    • 网格不是特定于用户的,所以如果我在网格模型中使用belongToMany(Fabrics::class),那么当我想要特定用户时,它会为所有用户提供结果。如果我错了,请纠正我
    • 由于设计师是中间表,它可以双向工作。你可以从织物或网眼开始。如果你做 $mesh->fabrics 你会得到所有通过设计师关联的面料。如果您需要特定的设计师,请查看 Laravel 文档中的 pivot 。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2015-03-04
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    相关资源
    最近更新 更多