Laravel的混淆点和实现Entity Relationship

Confusing point of Laravel and implementing Entity Relationship

我用了laraveleloquent好久了。当我使用 eloquent 关系时,每一秒都会有一个或多个混淆点决定我必须使用哪种关系(OneToOne、OneToMany、ManyToMany 及其逆...)

据我了解,在laravel中,有OneToMany Polymorphic关系,在其文档中,实现有明确的方向。 VideoPost有很多Comment。因此,Comment 变形为 VideoPost 并且 VideoPost 变形为许多 Comment。我明白了。这是Various type of "one" objectOne type of "many" object.

的情况

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

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


问题更新.1

我有两个表 CollectionProblem.

从关系的角度来看,Collection有它的childCollectionProblem

例如,CollectionA 有其 child、Problem1CollectionBProblem2Problem3CollectionC。这五个 childrens 有它的顺序。

由于 children 在两个不同的 class 中有顺序,我认为我不能将它们分离为单独的 hasMany 关系..

** 为了解决这个问题,我一直在使用以下想法。

Collection 有很多 CollectionItem.

CollectionItem morphTo Collection|Problem.

这在特定点上找到了,但我不确定这是找到练习..

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

  • 一个Chapter有很多Section
  • 一个Chapter有很多Column

所以,只需定义两个关系:

# 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);
}