2016-08-23 17 views
0

Ich habe 3 Tabellen, die miteinander verwandt sind.Laravel Benutzer von Post

Benutzer, Kunden, Notizen

Benutzer Notizen zu einem Client hinzufügen können.

Die Noten-Tabelle hat die folgende

id, user_id, client_id, note 

Auf meiner Kunden Seite „Client/{id}“ Ich drucke alle Notizen, die für den jeweiligen Kunden hinzugefügt wurden.

Ich kann jedoch nicht den Namen des Benutzers aus der Tabelle Benutzer aus der Notiz abrufen.

Es heißt Versuch, Eigenschaft von Nicht-Objekt zu bekommen, wenn ich versuche, den Namen des Benutzers, der die Notiz veröffentlicht hat, zu ziehen.

ClientController

$client = Client::find($cid); 

    if (empty($client)) { 
     return Redirect::to('contact');  //redirect to contacts if contact not found 
    } else { 
     $this->layout->content = View::make('clients.show')->with('client', $client); 
    } 

Client-Ansicht

@foreach ($client->notes as $note) 
    {{ $note->note }} //This works just fine. 
    Posted by: {{ $note->user->name }} 
@endforeach 

My Note Modell:

public function user() { 
    return $this->belongsTo('User','user_id'); 
} 

Mein Benutzermodell:

public function notes() { 
    return $this->hasMany('Note','user_id'); 
} 

Wenn ich die Funktion versuchen und verwende ich so etwas wie

$note->user()->get() 

tun können, aber das wird aus dem gesamten Array drucken (es ist die richtige Array) der Benutzerzeile.

Antwort

0

Versuchen: Ändern Sie diese Zeile

$client = Client::find($cid); 

Um

$client = Client::find($cid)->load('notes.user'); 

Oder

$client = Client::find($cid)->with('notes.user')->get(); 
+0

Last funktioniert, mit nicht. – NyseX

+0

@NyseX. Testen Sie erneut 'mit' Lösung. Ich denke, es wird richtig funktionieren – KmasterYC

0

Ich glaube, die belongsTo und hasMany benötigen den vollständigen Pfad zu dem Modell, auf das sie sich beziehen.

So:

Hinweise

public function user() { 
    return $this->belongsTo('App\User'); 
} 

Benutzer

public function notes() { 
    return $this->hasMany('App\Note'); 
} 
+0

Das ist nicht funktioniert. Vergessen zu erwähnen auch seine Laravel 4.2 – NyseX

+0

Woah, das ist ein schneller Downvote. Das Googeln scheint so, dass viele Leute diesen Fehler haben, also dachte ich mir, ich würde es hier fallen lassen. Mir war auch nicht bewusst, dass dies immer noch Laravel 4.2 war, was bedeutet, dass es Dinge gibt, an die ich in Laravel 5 denke, die einfach nicht für OP funktionieren. – Loek

+0

War ich nicht downovoted: O. Also gab ich dir eine Aufwertung, lol. – NyseX

0

ein Update für das Problem gefunden von

$note->user()->pluck('name') 
mit

Glauben Sie nicht, das ist der beste Weg. Obwohl es funktioniert.