2

我与父母和他们的孩子有一个设置。一个孩子可以有多个父母,并且系统可以为每个孩子分配多条消息。每个父母也可以有多个孩子。

我已经有一个用户实例:$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');
    }
}
4

1 回答 1

0

这种情况下没有原生关系。

我创建了一个HasManyThrough支持关系BelongsToManyGitHub 上的存储库

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

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

    public function childPosts() {
        return $this->hasManyDeep(ChildPost::class, ['parents_children', Child::class]);
    }
}
于 2018-07-24T00:24:10.383 回答