Trying to get property of non-object - Laravel 5

I'm trying to echo out the name of the user in my article and I'm getting the ErrorException: Trying to get property of non-object. My codes:
Models
1. News

    class News extends Model
    {
      public function postedBy()
      {
         return $this->belongsTo('App\User');
      }
      protected $table = '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'];

    }
Schema
table users
enter image description here
table news
enter image description here
Controller
public function showArticle($slug)
    {
        $article = News::where('slug', $slug)->firstOrFail();
        return view('article', compact('article'));
    }
Blade
{{ $article->postedBy->name }}
When I try to remove name in the blade {{ $article->postedBy }} it outputs the id, but when I try to add the ->name there it says Trying to get property of non-object but I have a field name in my table and a User model. Am I missing something?

Answer:
I got it working by using Jimmy Zoto's answer and adding a second parameter to my belongsTo. Here it is:
First, as suggested by Jimmy Zoto, my code in blade from $article->poster->name to $article->poster['name']. Next is to add a second parameter in my belongsTo, from return $this->belongsTo('App\User'); to return $this->belongsTo('App\User', 'user_id'); in which user_idis my foreign key in the news table.
Thanks for all your help!

0 Response to "Trying to get property of non-object - Laravel 5"

Đăng nhận xét

Popular Posts

Popular Posts