Solved – Trying to get property of non-object – Laravel

Problem

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'];

    }

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 

 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?

Solution

Is your query returning array or object? If you dump it out, you might find that it’s an array and all you need is an array access ([]) instead of an object access (->).

Second Opinion

$article->poster->name

to

$article->poster['name']</code></pre>

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_id

 is my foreign key in the news table.



from Linux Hint https://ift.tt/2PMvz0t

Post a Comment

0 Comments