2017-03-11 1 views
1

많은 데이터를 얻는 방법 -> ID, 이름, 비밀번호, roles -> ID, 역할, role_user -> ROLE_ID, USER_ID 지금은 원하는 경우LaraveL : 나는 <code>user</code>있는 3 개 테이블이 많은 관계

을 보기 페이지에 연관된 데이터를 표시하는 것은 사용자와 관련된 역할을 의미합니다. 어떻게 볼 수 있습니까? 내가 사용자가 그것을 선택하지 않은 것, 그렇지 않으면 확인됩니다 역할이 있는지 보여주고 싶은 의미 여기

내 컨트롤러 :

$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> 

답변

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 }} 
+0

내보기에서

$users = User::all(); 

나는'의 속성을 얻기 위해 시도 할 때 {{$ 역할 -> 역할}}'역할이 건물의 이름은 그대로 , 나는 다음과 같은 오류'속성 [roles]가이 컬렉션 인스턴스에 존재하지 않습니다. '라고 말합니다. – User57

+0

@ User57은'dd()'를 사용하여 어떤 데이터가 있는지 봅니다. ''{$ dd ($ role)}}'' –

+0

''dd ($ users)'와 같이, "roles"=> 콜렉션에서 다음과 같은 결과를 얻었습니다 : #attributes : array : 5 [▼ "id"= > 1 "role"=> "admin" "label"=> "Admin" "created_at"=> "2017-03-11 06:02:12" "updated_at"=> "2017-03-11 06:02:12 " – User57

0

이를 :

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

역할 모델 :

내 컨트롤러에서 16,
public function user() { 
     return $this->belongsToMany(User::class); 
    } 

:

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

아무것도 폼 데이터베이스에서 나왔습니다. 솔루션에서 빈 페이지가 나타납니다. – User57