【问题标题】:Laravel - nested relationships through Many to ManyLaravel - 通过多对多的嵌套关系
【发布时间】:2014-10-14 19:09:27
【问题描述】:

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

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

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

这是我的设置:

用户(父母)

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

【问题讨论】:

  • 我也在寻找类似的东西,但看起来没有“成熟”的解决方案,因为有很多对很多

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


【解决方案1】:

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

我创建了 HasManyThrough 关系并支持 BelongsToMany: Repository on GitHub

安装后可以这样使用:

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

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

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2014-06-16
    • 2017-08-03
    • 2021-12-17
    • 1970-01-01
    • 2016-12-20
    相关资源
    最近更新 更多