laravel hasmanythrough on manytomany

Posted

技术标签:

【中文标题】laravel hasmanythrough on manytomany【英文标题】: 【发布时间】:2016-03-04 14:48:30 【问题描述】:

我正在构建一个用户和角色之间的多对多以及角色和权限之间的多对多的应用程序。 我想获得具有 hasManyThrough 的用户的权限,但它不起作用。此关系需要角色表中的 user_id,但由于它们是多对多的,因此当然没有。 谁有解决方法?

【问题讨论】:

【参考方案1】:

hasmanythrough 在多对多关系上是不可能的。

这已经在另一个帖子中得到了更详细的回答: HasManyThrough with one-to-many relationship

您也可以参考:http://laravel-tricks.com/tricks/i-has-many-through-relation-laravel-the-missed-shortcut

【讨论】:

【参考方案2】:

有一个 Laravel 5.5 composer 包可以执行多级关系(深度)

包装: https://github.com/staudenmeir/eloquent-has-many-deep

例子:

User → 属于许多 → Role → 属于许多 → Permission

class User extends Model

    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function permissions()
    
        return $this->hasManyDeep(
            'App\Permission',
            ['role_user', 'App\Role', 'permission_role'], // Pivot tables/models starting from the Parent, which is the User
        );
    

是否需要定义外键的例子:

https://github.com/staudenmeir/eloquent-has-many-deep/issues/7#issuecomment-431477943

【讨论】:

以上是关于laravel hasmanythrough on manytomany的主要内容,如果未能解决你的问题,请参考以下文章

通过 Laravel 关系查询 HasManyThrough 检索相关记录

Laravel:如何平均嵌套 hasMany 关系(hasManyThrough)

Laravel 5 hasManyThrough 数据透视表

Laravel hasManyThrough 深入

Laravel 5 hasManyThrough 重复行内容

Laravel Eloquent: hasManyThrough 多对多关系