Après avoir aidé via le chat, le problème était qu'il y avait une colonne existante appelée group
, et la méthode de relation était également appelée group
, de sorte que la valeur de la colonne de table prévalait sur la méthode de relation.
Renommer la méthode de relation, ou le group
colonne à quelque chose comme group_id
sont les deux solutions appropriées (je suggérerais le group_id
itinéraire).
Réponse originale :
Vous récupérez le groupe via une propriété magique, pas directement à partir de la méthode.
echo User::find(1)->group->name;
Si vous récupérez le group()
méthode, il renverra l'objet de relation, n'effectuera aucune requête et récupérera l'objet de relation.
En outre, Eloquent fera des hypothèses sur les noms de vos colonnes de clé étrangère. Group
se traduirait automatiquement en un group_id
colonne. Si vous avez une colonne existante appelée group
, alors vous devez le spécifier explicitement dans votre relation :
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Si vous recevez une erreur "Trying to get property of non-object" pour la propriété group
, alors votre relation ne renvoie aucun résultat ($user->group
sera NULL
). À ce stade, vous devez vous assurer que votre relation est correctement configurée (par exemple, en utilisant les bons namesTo, hasOne, hasMany, etc.) et vous assurer que vous avez réellement une entrée associée dans votre base de données.