"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Why does "Error trying to get non-object attributes" appear when accessing a username in a Laravel 5 news article?

Why does "Error trying to get non-object attributes" appear when accessing a username in a Laravel 5 news article?

Posted on 2025-04-14
Browse:690

Why am I Getting

Unable to Access Object Property - Laravel 5

Issue Description

An attempt to echo out the name of a user from a News article is failing, resulting in the following error:

ErrorException: Trying to get property of non-object

Code Context

Models

class News extends Model
{
    public function postedBy()
    {
        return $this->belongsTo('App\User');
    }
}

class User extends Model
{
    protected $fillable = ['name', ...];
}

Schema

  • Table: users with a 'name' column
  • Table: news with a 'postedBy' column linking to users

Controller

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

Blade Template

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

Explanation

The error occurs because the query in the controller (News::where('slug', $slug)->firstOrFail()) is returning an array, not an object. When trying to access ->postedBy on an array, the property is not recognized and the error is thrown.

To resolve the issue, you need to convert the array to an object before accessing the ->postedBy property. This can be done by using the findBySlug method on the News model instead of firstOrFail():

public function showArticle($slug)
{
    $article = News::findBySlug($slug); // Returns an object
    return view('article', compact('article'));
}

This will allow you to successfully access the ->postedBy property on the object and display the user's name in the Blade template.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3