我的数据库内容为3个表:
users roles role_user
id | name id | name user_id | role_id
角色模型:
class Role extends Model
{
// TODO
}
用户模型:
public function roles(){
return $this->belongsToMany('Role');
}
控制器:
public function getUsers(){
$users = User::all();
foreach($users->roles as $item){
dd($item);
}
}
当我调用方法getUsers()
时,我收到错误:
未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ roles
所以,我需要获得用户的所有角色,它可能是每个用户的一些值。 我做错了什么?
答案 0 :(得分:2)
用户是一个Eloquent集合,这就是角色方法不存在的原因。
你想要做这样的事情:
public function getUsers() {
// eager load roles to prevent n+1 query problem
$users = User::with('roles')->get();
foreach ($users as $user) {
foreach ($user->roles as $item) {
echo $item;
}
}
}