我正在尝试以雄辩的风格让用户组中的所有角色成行。
//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等。
答案 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更改为模型的路径。)