Laravel:试图获取非对象的属性“职位”

时间:2019-09-08 10:49:02

标签: laravel laravel-5.7

我想显示来自用户的帖子。但是,我收到一条错误消息: 试图获取非对象的属性“帖子”

User.php

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

Post.php

public function author()
{
    return $this->belongsTo(User::class, 'author_id', 'id');
}

web.php

Route::get('test', function () {
    $user = User::find(5);
    return $user->posts;
});

2 个答案:

答案 0 :(得分:0)

Route::get('test', function () {
   $user = User::where('id', 5)->with('posts')->get();
   return $user;
});

答案 1 :(得分:0)

作者是一个单独的模型吗? 首先,您需要创建适当的迁移,以便在您的帖子表中将user_id引用为外键。

您应该具有与此类似的迁移方法:

Schema::table('posts', function (Blueprint $table) {
    $table->unsignedBigInteger('user_id');

    $table->foreign('user_id')->references('id')->on('users');
});

您的模型可以是这样的:

class Post extends Model
{
    /**
     * Get the user record associated with the post.
     */
    public function user()
    {
        return $this->hasOne('App\User');
    }
}

现在您应该可以致电$post->user,因为您的用例我不知道作者是谁,但是您应该可以适应我的祝福,祝您好运。