我有用户和角色两个表数据,我使用eloquent获取数据并发送到我的视图。 现在,我想动态填充用户角色复选框。在这个时候,我写的是硬代码
这是我的代码。
@foreach($users as $user)
<tr>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td>
@foreach($user->roles as $role)
<td><input type="checkbox" name="" {{$user->hasRole('User') ? 'checked' : ''}}></td>
<td><input type="checkbox" name="" {{$user->hasRole('Admin') ? 'checked' : ''}}></td>
<td><input type="checkbox" name="" {{$user->hasRole('Author') ? 'checked' : ''}}></td>
@endforeach
<td></td>
</tr>
@endforeach
我的雄辩查询。
$users=User::with('roles')->get();
return view('admin',compact('users'));
用户模型关系。
public function roles()
{
return $this->belongsToMany('App\Role');
}
答案 0 :(得分:0)
在控制器中,您还需要加载所有角色:
$users = User::with('roles')->get();
$roles = Role::get();
return view('admin', compact('users', 'roles'));
在视图中,做这样的事情:
@foreach($users as $user)
<tr>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
@foreach($roles as $role)
<td><input type="checkbox" name="role[]" {{ $user->roles->contains($role) ? 'checked' : '' }}></td>
@endforeach
<td></td>
</tr>
@endforeach
因此,您需要遍历所有角色,而不仅仅是遍历用户拥有的角色。