Laravel - 通过多对多的嵌套关系

时间:2014-08-21 08:18:00

标签: php laravel-5 eloquent many-to-many has-many-through

我和父母及其子女有一个安排。孩子可以有多个父母,系统可以为每个孩子分配多条消息。每个家长也可以有多个孩子。

我已经有了一个用户实例:$ parent。现在我想收到属于这位父母孩子的所有帖子。 Laravel的“有许多通过”并不适用于多对多的关系。

目前我用自定义方法解决了这个问题,但我正在寻找解决此问题的更简洁方法。

这是我的设置:

用户(家长)

class User extends Eloquent
{
    public function children()
    {
        return $this->belongsToMany('Child', 'parents_children', 'user_id');
    }
}

儿童:

class Child extends Eloquent
{
    public function parents()
    {
        return $this->belongsToMany('User', 'parents_children', 'child_id');
    }

    public function posts()
    {
        return $this->hasMany('Posts', 'ChildPost');
    }
}

帖子

class ChildPost extends Eloquent
{
    public function child()
    {
        return $this->belongsToMany('Child');
    }
}

1 个答案:

答案 0 :(得分:0)

在这种情况下没有本机关系。

我创建了HasManyThrough关系,并支持BelongsToManyRepository on GitHub

安装后,您可以像这样使用它:

class User extends Model {
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function childPosts() {
        return $this->hasManyDeep(ChildPost::class, ['parents_children', Child::class]);
    }
}