首页 > 解决方案 > 获取用户的所有帖子

问题描述

我对 Laravel 真的很陌生,并且遇到了一些问题。我有一个 /user/USERNAME 视图,它显然显示了用户个人资料。但现在我想让用户发布的所有帖子都显示在他的个人资料上。

我的 web.php

Route::group(['middleware' => 'auth'], function() {
    Route::any('/user/{username}', [
        'as'   => 'user',
        'uses' => 'UserController@view_user' 
    ]);
});

我的用户模型

public function posts() {
    return $this->hasMany(Post::class);
}

我的帖子模型

public function user() {
    return $this->belongsTo(User::class);
}

我的用户控制器

public function view_user($username = null) {
        $user = null;

        $user = User::where('name', $username)->firstOrFail();
        $posts = Post::where('creator', $username)->get();

        return view('/user', [
            'user' => $user,
            'posts' => $posts
        ]);
    }

    public function index() {
        $posts = Post::all();
        return view('user', compact('posts'));
    }

当我尝试使用例如 {{ $posts->title }} 获取帖子时,它给了我:此集合实例上不存在属性 [title]。

我应该如何以正确的方式做到这一点?

标签: laravel

解决方案


$posts返回一个集合,因此为了检索帖子的标题,您需要遍历集合的单个项目。然后你可以使用$post->title.


推荐阅读