2017-12-29 19 views
1

So bekomme ich immer wieder diesen Fehler, wenn ich versuche, den Namen des Benutzers zu erhalten, der einen Beitrag erstellt hat.Versuchen, Eigenschaft von Nicht-Objekt zu erhalten, wenn Sie in Laravel One to Many-Beziehung verwenden

Meine Modelle wie folgt aussehen:

class User extends Authenticatable { 
    use Notifiable, CanResetPassword; 

    public function posts() { 
     return $this->hasMany('App\Post'); 
    } 
} 

&

class Post extends Model { 

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

Ich versuche, den Namen anzeigen, indem Sie diese aus meiner Sicht:

@foreach($posts as $post) 
    <tr> 
     <td>{{ $post->user->name }}</td>   
    </tr> 
@endforeach 

Und mein Controller sieht aus wie dies:

public function getAdminIndex() { 
    $posts = Post::orderBy('id', 'desc')->get(); 
    $comments = Comment::all(); 
    $likes = Like::all(); 
    $users = User::all(); 

    return view('admin.index', ['posts' => $posts, 'comments' => $comments, 'likes' => $likes, 'users' => $users]); 
} 

Kann mir bitte jemand sagen, was ich falsch mache?

Vielen Dank!

Antwort

4

Es bedeutet nicht alle Beiträge Benutzer haben, so etwas tun, wie folgt aus:

<td>{{ optional($post->user)->name }}</td> 

Oder:

<td>{{ empty($post->user) ? 'No user' : $post->user->name }}</td> 
+1

Thank you so viel, optional der Trick, wird so bald Ihre Antwort akzeptieren, wie Ich bin in der Lage! –

Verwandte Themen