LaraveL:如何从多对多的关系中获取数据

时间:2017-03-11 11:46:06

标签: php laravel laravel-5

我有3个表user - > id,名称,密码,roles - > id,角色,role_user - > role_id,user_id

现在,如果我想在视图页面中显示相关数据,则意味着与用户相关的角色..如何在视图中执行此操作? 表示我想显示用户是否有角色,否则将被检查,否则将取消选中

这是我的控制器:

$users = User::all();
$roles = Role::all();
return view("Permission::assign_role",compact('users','roles'));

查看页面

<table class="table">
    <thead>
    <tr>
        <th>SL No</th>
        <th>Name</th>
        <th>Role</th>
    </tr>
    </thead>
    <tbody>
    <?php $i = 1; ?>
    @foreach($users->roles() as $row)
    <tr>
        <td>{{$i}}</td>
        <td>{{$row->name}}</td>
        <td><input type="checkbox" name="role_id" checked> $role->role</td>
    </tr>

    <?php $i++; ?>

    @endforeach
    </tbody>
</table>

2 个答案:

答案 0 :(得分:0)

Eager load数据:

$users = User::with('roles')->get();
return view("Permission::assign_role", compact('users'));

在视图中,如果要检查用户是否具有特定角色,则可以执行以下操作:

@if ($user->roles->contains($roleId))

如果您想迭代用户的角色:

@foreach($users->roles as $role)
    {{ $role->name }}

答案 1 :(得分:0)

我如何使用我的应用程序:

用户模型:

public function roles() {
        return $this->belongsToMany(Role::class);
    }

角色模型:

public function user() {
        return $this->belongsToMany(User::class);
    }

在我的控制器中:

$users = User::all();

在我的视图中

@foreach($users as $user)
   @foreach($user->roles() as $role)
     {{$role->name}}
   @endforeach
 @endforeach