2016-05-25 12 views
0

Ich habe eine viele zu viele Beziehung zwischen den Modellen Benutzer & Benachrichtigung.Laravel Viele zu viele Methode Problem

Benutzermodell:

public function notifications() 
{ 
    return $this->belongsToMany('Yeayurdev\Models\Notification', 'notifications_user', 'user_id', 'notification_id') 
     ->withPivot('notifier'); 
} 

Mitteilung Modell:

public function user() 
{ 
    return $this->belongsToMany('Yeayurdev\Models\User', 'notifications_user', 'notification_id', 'user_id'); 
} 

Pivot-Tabelle:

ID  USER_ID  NOTIFICATION_ID 
1   2    1 

Meiner Ansicht abrufen ich eine Liste aller Meldungen für einen Benutzer wie so .

@foreach (Auth::user()->notifications as $notification) 
    {{ $notification->user->username }} 
@endforeach 

Das Problem ist, dass, wenn ich versuche, den Benutzernamen des Benutzers mit dieser Benachrichtigung zu erhalten, habe ich den Fehler nicht definierte Eigenschaft erhalten: Illuminate \ Database \ Eloquent \ Collection :: $ username. "Benutzername" ist die Spalte in meiner Benutzertabelle, die nur eine Zeichenfolge ist. Ich sehe nicht, wo ich falsch liege, denn wenn ich nur "$ notificatin-> user" mache, gibt es mir die Sammlung.

Danke!

+0

Haben Sie versucht, mit Klammern '{{$ notification-> user() -> username}}'? – TheFallen

+0

Können Sie den Inhalt von '$ notification-> user' zu Ihrer Frage hinzufügen. Vielen Dank. – haakym

Antwort

6

Wie Sie gesagt haben, ist die Beziehung viele zu viele, so dass $ notification-> user in Ihrem Fall eine Sammlung von Benutzermodellen zurückgibt, NICHT einen einzigen Benutzer. Wenn Sie nur einen ersten Benutzer brauchen dann nur tun

{{ $notification->user()->first()->username }} 

Wenn Sie alle Benutzer für jede Meldung ausdrucken müssen, dann werden Sie eine Schleife hier brauchen, um durch alle Benutzer zu gehen.

Ich würde empfehlen, Benutzer() Beziehung zu Benutzern() zu benennen, um Verwirrung in der Zukunft zu vermeiden.

+0

Ja, das habe ich gerade herausgefunden. Hätte zuerst bemerkt werden müssen, wenn ich $ notification-> user gemacht und die Ausgabe angesehen habe. Vielen Dank! –

Verwandte Themen