在Laravel中使用“一对多”关系时,尝试获取非对象的属性

问题描述 投票:1回答:1

因此,在尝试获取创建帖子的用户的名称时,我不断收到此错误。

我的模型看起来像这样:

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');
    }
}

我尝试在我的视图中显示名称:

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

我的控制器看起来像这样:

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]);
}

谁能告诉我我做错了什么?

非常感谢你!

php laravel laravel-5 eloquent
1个回答
4
投票

这意味着并非所有帖子都有用户,所以请执行以下操作:

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

要么:

<td>{{ empty($post->user) ? 'No user' : $post->user->name }}</td>
© www.soinside.com 2019 - 2024. All rights reserved.