【发布时间】:2019-03-03 12:41:43
【问题描述】:
我正在尝试通过中间表检索所有与另一个模型相关的模型,但不知道如何。 Laravel 文档说你可以这样做:
$roles = App\User::find(1)->roles()->orderBy('name')->get();
但是当我尝试将其应用于我的代码时
$roles = User::where('id', $user->id)->roles()->get();
它不起作用。我通过我的控制器接受用户模型,所以我可以访问它。
关系也是这样定义的:
User
public function roles()
{
return $this->belongsToMany(Role::class);
}
Role
public function users()
{
return $this->belongsToMany(User::class);
}
如何获取与特定用户关联的所有角色?
编辑/更新: 我知道我可以简单地使用 foreach 循环并获取与特定用户关联的所有角色,但我试图返回一个资源集合,所以我不能那样做
【问题讨论】:
-
尝试将
get()更改为first() -
我收到一个错误,
undefined method roles -
@hoolakoola 我认为您的角色和用户之间的关系不正确。
-
一般情况下
Role与用户的关系为$this->hasMany(User::class);,也可以通过User::find($id)->roles;
标签: laravel many-to-many relationship