"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi "l'erreur qui essaie d'obtenir des attributs non objets" apparaît-il lors de l'accès à un nom d'utilisateur dans un article de Laravel 5?

Pourquoi "l'erreur qui essaie d'obtenir des attributs non objets" apparaît-il lors de l'accès à un nom d'utilisateur dans un article de Laravel 5?

Publié le 2025-04-14
Parcourir:433

Why am I Getting

Impossible d'accéder à la propriété de l'objet - Laravel 5

problème description

Une tentative de faire écho au nom d'un utilisateur à partir d'un article de presse est échoué, résultant en l'erreur suivante:

ErrorException: Trying to get property of non-object

Modèles

Les nouvelles de la classe étendent le modèle { fonction publique publiée par () { return $ this-> appartenance ('app \ user'); } } L'utilisateur de classe étend le modèle { protégé $ remplissant = ['name', ...]; }

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

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

Table: utilisateurs avec une colonne 'name'
  • Table: une colonne 'Publié' liant les utilisateurs

modèle de lame

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

class User extends Model
{
    protected $fillable = ['name', ...];
}
{{$ Article-> Publié-> name}}

explication

L'erreur se produit parce que la question dans le contrôleur (news: where ('slug' Array, pas un objet. Lorsque vous essayez d'accéder à -> Publié sur un tableau, la propriété n'est pas reconnue et l'erreur est lancée.
class News extends Model
{
    public function postedBy()
    {
        return $this->belongsTo('App\User');
    }
}

class User extends Model
{
    protected $fillable = ['name', ...];
}
pour résoudre le problème, vous devez convertir le tableau en un objet avant d'accéder à la propriété -> Publié. Cela peut être fait en utilisant la méthode FindBysLug sur le modèle d'actualités au lieu de FirstorFail ():

Fonction publique Showarticle ($ slug) { $ Article = News :: FindBysLug ($ slug); // renvoie un objet Return View ('Article', Compact ('Article')); }

Cela vous permettra d'accéder à la propriété -> Publié de l'objet et d'afficher le nom de l'utilisateur dans le modèle de lame.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3