Laravel:使用数据透视表获取具有各自角色的分组

时间:2019-05-12 10:29:31

标签: php laravel laravel-5 eloquent

enter image description here

我正在尝试以雄辩的风格让用户组中的所有角色成行。

//this function is defined in the ModelUserGroup
public function roles(){
    return $this->hasMany(ModelGroupRole::class, 'group_id','id');
}

我正在尝试获得所有这样的角色:

ModelUserGroup::with('roles')->get(),

我也尝试过->hasManyThrough,但是它对我不起作用。

我需要使用with来获取所有角色数据,例如id,name等。

2 个答案:

答案 0 :(得分:2)

好像您需要belongsToMany关系。

在您的UserGroup模型中。

public function roles()
{
    // Assuming your role model is named ModelRole...
    return $this->belongsToMany(ModelRole::class, 'group_role', 'group_id', 'role_id');
}

现在您可以执行以下操作:

$group = ModelUserGroup::with('roles')->first();

dd($group->roles); // will be a collection of ModelRole's

已在我的手机上应答,因此可能存在语法错误。

答案 1 :(得分:0)

正如here在多对多部分中所述,您必须将关系定义为以下各项:

在User_Group中:

 public function roles(){
       return  $this->belongsToMany('App\Pathto\Role', 'group_role','group_id','role_id');
    }

角色:

 public function user_groups(){        
      return $this->belongsToMany('App\Pathto\UserGroup', 'group_role', 'role_id', 'group_id');
    }

编辑:ModelUserGroup::with('roles')->get() should work just fine then. (当然,将pathto更改为模型的路径。)