我有两个表名称是用户和角色表。我在Laravel Eloquent中使用数据透视表名称 Role_User 在他们之间设置了许多关系。 现在,我想使用Eloquent Relationship将两个表数据一起显示在一个视图中。(例如,我想在我的视图中显示来自用户表的用户包含角色中的哪个角色表)
这是我雄辩的关系。
public function roles()
{
return $this->belongsToMany('App\Role');
}
public function users()
{
return $this->belongsToMany('App\User');
}
我的,有说服力的关系查询。
$users=User::with('roles')->get();
return view('admin',compact('users'));
我在我的视图中尝试。
@foreach($users as $user)
<tr>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td>
<td>{{$user->roles->name}}</td>
<td></td>
</tr>
@endforeach
答案 0 :(得分:3)
当您致电$user->roles
时,您会收到一系列角色。因此,如果您想将它们全部显示在一个字符串中,您只需要在该字符串上内嵌集合:
<td>{{$user->roles->implode('name', ', ')}}</td>
答案 1 :(得分:0)
您的$user->rules
是角色集合模型的实例。你可以再使用一个foreach:
@foreach($users as $user)
//do something with user
@foreach($user->roles as $role)
{{$role->name}}
@endforeach
@endforeach
答案 2 :(得分:0)
这将适用于Laravel 5.0及更高版本 如果我们有两个Model User和Mark。然后在用户模型内部创建一个与Mark关系的函数。例子
public function marks()
{
return $this->hasMany('App\Models\Mark');
}
因此,如果要显示用户名,将显示他的所有标记。然后在控制器内部执行以下方法。
public function getUserMarks(){
$result = User::select('email', 'name')->where('email', 'usermail@example.com')->with(['marks'])->get();
return view('welcome', compact('results'));
}