Laravel 5.1属于尝试获取非对象属性

Laravel 5.1属于尝试获取非对象属性,laravel,Laravel,我试图在我的文章中呼出用户的名字,我得到了ErrorException试图获取非object的属性。这是我的密码: 模型(我也有一个用户模型): 控制器: public function showArticle($slug) { $article = News::where('slug', $slug)->firstOrFail(); return view('article', compact('article')); } 刀片: {{

我试图在我的文章中呼出用户的名字,我得到了
ErrorException试图获取非object的属性。这是我的密码:

模型(我也有一个用户模型):

控制器:

public function showArticle($slug)
    {
        $article = News::where('slug', $slug)->firstOrFail();
        return view('article', compact('article'));
    }
刀片:

{{ $article->postedBy->name }}
当我试图删除刀片
{{$article->postedBy}}
中的名称时,它会回显id,但当我试图添加
->name
时,它会说
试图获取非对象的属性
,但我的表和
User
模型中有一个字段
name
。我错过什么了吗


更新:当我尝试用户dschu所说的
{{dd($article->postedBy)}}
时,我得到了用户的id。

问题是,您的关系和数据库中的字段似乎具有相同的名称(postedBy)


您应该有一个名为user_id的字段,而不是postedBy(或一致的userId)。

您能{{dd($article->postedBy)}并发布您的结果吗?我只是想确定,这是您得到的实际用户模型。@dschu您好,谢谢,我得到了用户的id,所以是一个字符串而不是模型??然后尝试dd($article->postetBy->get()。@dschu我在非对象上调用了一个成员函数get(),因为它位于bladeWhere是存储在新闻模型中的用户id?尝试将此键作为第二个参数添加到belongsTo。您可以将'user\u id'作为第二个参数传递给belongsTo方法,如下所示:$this->belongsTo('user','user\u id');在这种情况下,他对postedBy应该没问题。@dschu好吧,我真的不认为阅读更好,因为是的,你会知道它指的是什么,但它没有提供你正在存储什么的信息。另外,我不知道Laravel将如何处理具有相同名称的属性和关系,当他调用$news->postedBy时,它是指DB中的字段还是关系?不确定答案。你是对的——再想想,我得出了相同的结论,这就是我编辑答案的原因。:)嗨,我回办公室后会试试这个。非常感谢。
{{ $article->postedBy->name }}