2016-07-30 25 views
-1

Ich habe drei Modelle und entsprechende Tabellen. Benutzer, Post, Kommentar. Spalte der Benutzer Tabelle sind ID, Name, E-Mail. Spalte der Posts Tabelle sind ID, Titel, Körper. Spalte der Kommentartabelle ist id, user_id, post_id, comment.nicht Benutzerdaten des Kommentars in der Ansicht eines Beitrags in Laravel abrufen

User-Modell hat diese Funktion wie folgt:

public function comments(){ 

     return $this->hasMany('App\Comment'); 
    } 

Beitrag Modell hat diese Funktion wie folgt:

public function comments(){ 

     return $this->hasMany('App\Comment'); 
    } 

Kommentar Modell hat diese beiden Funktionen wie folgt:

public function user(){ 

     $this->belongsTo('App\User'); 
    } 

    public function post(){ 

     $this->belongsTo('App\Post'); 
    } 

einzelne Post zeigt Funktion in PostController ist wie folgt:

public function show($slug) 
    { 
     $post = Post::where('slug', $slug)->first(); 
     return view('post.show')->withPost($post); 
    } 

und in show.blade.php ich versuche, diese Funktionalität zu erreichen:

@foreach($post->comments as $comment) 
<p> 
{{$comment->user->name}} 
</p> 
@endforeach 

Warum es wirft Fehler Beziehung Methode sagen, ein Objekt zurückgeben muss?

Antwort

0

Sie müssen return die Beziehung, so dass Ihr Code wird:

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

public function post(){ 
    return $this->belongsTo('App\Post'); 
} 
+0

omg ..... Wie habe ich es vermissen ... – babu

+0

Haha, passiert uns allen :) – Tom