Php 如何使用Laravel Eloquent动态填充复选框

Php 如何使用Laravel Eloquent动态填充复选框,php,laravel,Php,Laravel,我有用户和角色两个表数据,我使用eloquent获取数据并发送到我的视图。 现在,我想动态填充用户角色复选框。此时,我写的是硬代码 这是我的密码 @foreach($users as $user) <tr> <td>{{$user->name}}</td> <td>{{$user->email}}</td> @foreach($user->roles as $

我有用户角色两个表数据,我使用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
用户模型关系

 public function roles()
{
    return $this->belongsToMany('App\Role');
}

在控制器中,您还需要加载所有角色:

$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
@foreach($users作为$user)
{{$user->name}
{{$user->email}
@foreach($roles作为$role)
角色->包含($role)?'选中“:”}}>
@endforeach
@endforeach
所以,您需要迭代所有角色,而不仅仅是用户拥有的角色

@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