同一张表的多对多关系

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

我有表“项目”,其中包含字段 BasedOnId 我想在当前表中创建 morphToMany 关系

在资源项目中我创建字段

BelongsToMany::make(\App\Nova\Projects::label(), 'based', '\App\Nova\Projects')
                    ->searchable()
                    ->singularLabel(\App\Nova\Projects::singularLabel())

在模型项目中,我想创建“基于”的函数,但是如何使用同一个表来做到这一点?

代码

    public function based()
    {
       return $this->belongsToMany('App\Models\Projects', 'projects', 'basedOnId', 'id');
    }

不工作

我该怎么做?

laravel many-to-many laravel-10 laravel-nova
1个回答
0
投票

如果我理解正确的话,听起来你有一个多对多的关系情况。这些可能很难管理。

考虑使用“连接表”。 这将“多对多”关系分解为两个“一对多”关系。

例如: 您可能有一个包含“student_id”和“subject_id”字段的表。但后来你意识到: 一个学生可以有很多科目。 一门学科可以有很多学生。 所以我们有一个多对多的关系。

通过创建具有两个字段的联接表来解决此问题:

  • “student_id”对学生表具有外键约束
  • “subject_id”对主题表具有外键约束 连接表本身没有主键。 现在,我们通过连接表建立了两个“一对多”关系,使生活变得更加轻松。

考虑阅读连接表。我希望这有帮助...

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