代码之家  ›  专栏  ›  技术社区  ›  medilies

属于同一模型的两个模型之间的雄辩关系

  •  0
  • medilies  · 技术社区  · 4 年前

    我看到了 父母亲 和 小孩 多对多,但我还不知道如何用 雄辩的关系 .

    Database visualisation

    我确实建立了这些关系

    class Child extends Model
    {
        public function family()
        {
            return $this->belongsTo(Family::class);
        }
    }
    
    class Parent extends Model
    {
        public function family()
        {
            return $this->belongsTo(Family::class);
        }
    }
    

    (我知道我不能说出一个班级的名字 父母亲 在PHP中,我只是不想透露我所有的数据库)

    class Family extends Model
    {
        public function parents()
        {
            return $this->hasMany(Parent::class);
        }
    
        public function children()
        {
            return $this->hasMany(Child::class);
        }  }
    }
    

    我需要在他们之间建立关系 小孩 和 父母亲 通过 家庭 .

    到目前为止,我一直在做:

    App\Models\Child::find(1)->family->with(['parents'])->get()
    

    或者:

    SELECT parents.id, CONCAT(parents.fname, ' ', parents.lname) AS parent_name
    FROM families
    JOIN parents ON families.id = parents.family_id
    WHERE families.id = 1
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   medilies    4 年前

    这种关系有效:

    class Children extends Model
    {
        public function parents()
        {
            return $this->hasManyThrough(Parent::class, Family::class, 'id', 'family_id', 'family_id', 'id');
        }
    }
    

    现在我可以做:

    App\Models\Student::find($id)->parents()->get();
    App\Models\Student::find($id)->parents;
    App\Models\Student::with(['parents', 'family'])->find($id)