显示laravel关系的值?
我使用laravel 5.1 mongodb的,我需要在刀片显示,我使用Laravel关系法(的hasMany)的用户列表,我试图,但我得到显示laravel关系的值?
error(Undefined property: Illuminate\Database\Eloquent\Collection::$roles)
表结构:
users-> userid, username,email, roleid.
user_roles->roleid,rolename;
我的问题很简单,我想从用户表与角色名userdetails,我附上了我的查询结果image.any请问? 控制器:
$users =User::with('roles')->get();
return view('Manage_users', compact('users'));
用户模型:
class User extends Eloquent
{
protected $collection = 'users';
public function roles()
{
return $this->hasMany('App\User_role','roleid','roleid');
}
}
User_roles型号:
class User_role extends Eloquent
{
protected $collection = 'user_roles';
public function user()
{
return $this->belongsTo('App\User','roleid','rolename');
}
}
你说错话和关系是错误的。 用户属于角色,角色拥有多个用户。
从用户型号:
public function role()
{
return $this->belongsTo('App\User_role','roleid','id');
}
从user_roles型号:
public function users()
{
return $this->hasMany('App\User','roleid','id');
}
您可以使用您的视图下面的代码。
<table>
<tr>
<th>User Name</th>
<th>Role</th>
</tr>
@foreach($users as $user)
<tr>
<td>{{ $user->username }}</td>
<td>{{ $user->roles->rolename }}</td>
</tr>
@endforeach
</table>
上面的代码将创建带有用户名和它的角色的表。
希望它可以帮助你!
根据[此图像链接](https://i.stack.imgur.com/TDqa0.png)上面的答案应该工作 –
它显示错误“尝试获取非对象的属性” –
如果没有为用户分配任何角色,它将失败(如错误)。 –
在控制器更新您的代码以这种
$users = User::with('roles')->whereHas('roles', function ($query) {
$query->where('roleid', '>', 0);
})->get();
return view('Manage_users', compact('users'));
它的返回空列表, 集合{#215▼ #items:[ ] } –
@MuMuthukumar有可能某些用户可能没有分配任何角色? –
不,所有用户都有一些角色,如管理员,承包商,检查员 –
它的工作后,我改变我的刀片这样的,感谢所有
@foreach($users as $user)
<tr>
<td>{{ $user->username }}</td>
<td>
@if ($user->roles)
{{ $user->roles->rolename }}
@endif
</td>
</tr>
@endforeach
用户可以有多个角色。你觉得@雷诚怎么样? –
不,一个用户只有一个角色 –
@VaibhavrajRoham,一个用户有一个角色,你可以从表结构中获得。 –