我正在使用带有mongodb的laravel 5.1,我需要在刀片上显示用户列表,我正在使用Laravel关系方法(hasMany),我试过但我得到了
error(Undefined property: Illuminate\Database\Eloquent\Collection::$roles)
表格结构:
users-> userid, username,email, roleid.
user_roles->roleid,rolename;
我的问题很简单,我希望用户表中带有rolename的用户详细信息,我已经附上了我的查询结果图片。请问有什么结果吗? 控制器:
$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');
}
}
答案 0 :(得分:0)
你的雄辩和关系是错误的。 用户属于角色,角色有很多用户。
来自用户模型:
public function role()
{
return $this->belongsTo('App\User_role','roleid','id');
}
来自user_roles模型:
public function users()
{
return $this->hasMany('App\User','roleid','id');
}
答案 1 :(得分:0)
您可以在视图中使用以下代码。
<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>
上面的代码将创建包含用户名及其角色的表。
希望它可以帮到你!
答案 2 :(得分:0)
在控制器中将代码更新到此
$users = User::with('roles')->whereHas('roles', function ($query) {
$query->where('roleid', '>', 0);
})->get();
return view('Manage_users', compact('users'));
答案 3 :(得分:0)
在我更换刀片之后它正在工作,谢谢大家
@foreach($users as $user)
<tr>
<td>{{ $user->username }}</td>
<td>
@if ($user->roles)
{{ $user->roles->rolename }}
@endif
</td>
</tr>
@endforeach