如何使用Laravel Eloquent

时间:2018-01-21 06:53:20

标签: php laravel

我有用户角色两个表数据,我使用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');
}

1 个答案:

答案 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

因此,您需要遍历所有角色,而不仅仅是遍历用户拥有的角色。