【问题标题】:Confusing point of Laravel and implementing Entity RelationshipLaravel 的困惑点与实体关系的实现
【发布时间】:2020-03-31 01:59:20
【问题描述】:

我已经使用 laravel eloquent 很长时间了。当我使用 eloquent 关系时,每一秒都会有一个或多个令人困惑的点来确定我必须使用哪种关系(OneToOne、OneToMany、ManyToMany 及其逆...)

据我了解,在 laravel 中有 OneToMany Polymorphic 关系,在其文档中,实现有明确的方向。 VideoPost 有很多 Comment。所以,Comment 变形为 VideoPostVideoPost 变形(到)许多 Comments。我明白了。这是Various type of "one" objectOne type of "many" object的情况。

让我们假设一个.. Chapter 有很多 Sections 和 Columns。据我了解,这是相反的情况。这个是One type of "one" objectVarious type of "many" object

所以,在这一点上,我无法决定我必须做什么。你能为我解释一下你是如何解决这个令人困惑的问题的吗? Laravel Relation 不能解释完整的情况吗?


问题更新 .1

我有两个名为 CollectionProblem 的表。

从关系的角度来看,Collection 有其子 CollectionProblem

例如,CollectionA 有其子 Problem1CollectionBProblem2Problem3CollectionC。这五个孩子有它写的顺序。

由于孩子们在两个不同的班级中都有秩序,我认为我不能将它们分离为单独的 hasMany 关系..

** 为了解决这个问题,我一直在使用下面的思路。

Collection 有很多CollectionItem

CollectionItemmorphTo Collection|Problem.

这个工作在这个特定点找到,但我不能确定这是找到实践..

【问题讨论】:

  • 本质上,您的收藏有parentchild 收藏。任何收藏都有自己的problems。不?在这种情况下,您可能需要阅读同一模型上的父子关系。

标签: php laravel relation


【解决方案1】:

这似乎是一对简单的One to Many relationships

  • 一个Chapter有很多Sections
  • 一个Chapter有很多Columns

所以,只需定义这两种关系:

# Chapter.php

public function sections()
{
    return $this->hasMany(Section::class);
}

public function sections()
{
    return $this->hasMany(Column::class);
}

当然,你也可以在每个子模型上定义reverse of the relationship

# Section.php

public function chapter()
{
    return $this->belongsTo(Chapter::class);
}

# Column.php

public function chapter()
{
    return $this->belongsTo(Chapter::class);
}

【讨论】:

  • 那么当我必须订购部分和列时我该怎么办?当我这样做时,有两个完全解耦的表 sectioncolumn 我不能将它们作为 Chapter 的孩子来订购..
  • @GatesPlan 它应该如何工作? edit 你的问题添加了你的问题的细节和你想要的输出。
猜你喜欢
  • 2020-10-11
  • 2022-07-17
  • 2020-05-08
  • 2020-10-09
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 2013-07-31
相关资源
最近更新 更多