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

时间:2015-09-08 07:55:02

标签: laravel

我正在尝试在文章中回显用户名,我正在获取ErrorException Trying to get property of non-object。这是我的代码:

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

1. News

    class News extends Model
    {
      public function postedBy()
      {
         return $this->belongsTo('User');
      }
      protected $table = 'tcity_news';
      protected $fillable = ['newsContent', 'newsTitle', 'postedBy'];
    }

2. User

    class User extends Model implements AuthenticatableContract,
                                AuthorizableContract,
                                CanResetPasswordContract
    {
        use Authenticatable, Authorizable, CanResetPassword;

        protected $table = 'users';

        protected $fillable = ['name', 'email', 'password'];

        protected $hidden = ['password', 'remember_token'];

    }

控制器:

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

刀片:

{{ $article->postedBy->name }}

当我尝试删除刀片{{ $article->postedBy }}中的名称时,它会回显ID,但当我尝试添加->name时,它会显示Trying to get property of non-object,但我有一个字段{{ 1}}在我的表和name模型中。我错过了什么吗?

更新当我尝试用户dschu所说的User时,我会得到用户的ID。

1 个答案:

答案 0 :(得分:1)

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

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