2017-03-11 4 views
1

Ich habe 3 Tabellen, die user sind -> ID, Name, Passwort, roles -> id, Rolle, role_user -> role_id, user_idLaravel: Wie Daten von vielen zu vielen Beziehung bekommen

Nun, wenn ich will die zugehörigen Daten auf der Ansichtsseite anzuzeigen, bedeutet die Rolle, die mit dem Benutzer verbunden ist. Wie mache ich das in Sicht? bedeutet, dass ich zeigen möchte, wenn der Benutzer Rolle hat, wird es anders überprüft, es

hier nicht markiert sein ist mein Controller:

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

Seite anzeigen

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

Antwort

0

Eager load die Daten:

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

Und in der Ansicht können Sie so etwas tun Wenn Sie überprüfen wollen, wenn der Benutzer spezifische Rolle:

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

Wenn Sie wollen einfach nur über Rollen des Benutzers iterieren:

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

als ich versuchte, die Eigenschaft '{{$ rollen-> Rolle}} zu erhalten' als Rolle ist der Name der Eigenschaft Ich sehe die folgende Fehler 'Eigenschaft [Rollen] ist nicht auf dieser Sammlung Instanz. ' – User57

+0

@ User57 verwenden' dd() ', um zu sehen, welche Daten es hat. Wie dieser '{{dd ($ role)}}' –

+0

wenn ich 'dd ($ users)', in "roles" => Sammlung habe ich die folgende Ausgabe '#attributes: array: 5 [▼ " id "= > 1 "rolle" => "admin" "label" => "Admin" "created_at" => "2017-03-11 06:02:12" "updated_at" => "2017-03-11 06:02:12 "' – User57

0

dies, wie ich für meine Anwendungen verwenden:

Benutzermodell :

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

Role Model:

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

In My Controller:

$users = User::all(); 

In My View

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

Nichts kam aus der Datenbank .. Ich sehe leere Seite von Ihrer Lösung – User57

Verwandte Themen