Nachdem ich durch den Chat geholfen hatte, bestand das Problem darin, dass es eine vorhandene Spalte mit dem Namen group
gab , und die Beziehungsmethode wurde auch group
genannt , also hatte der Tabellenspaltenwert Vorrang vor der Beziehungsmethode.
Umbenennen der Beziehungsmethode oder der group
Spalte zu so etwas wie group_id
sind beides geeignete Lösungen (ich würde die group_id
vorschlagen Strecke).
Ursprüngliche Antwort:
Sie rufen die Gruppe über eine magische Eigenschaft ab, nicht direkt von der Methode.
echo User::find(1)->group->name;
Wenn Sie die group()
abrufen -Methode gibt sie das Beziehungsobjekt zurück, führt keine Abfragen aus und ruft das zugehörige Objekt ab.
Außerdem wird Eloquent Annahmen darüber treffen, wie Ihre Fremdschlüsselspaltennamen lauten. Group
würde automatisch in eine group_id
übersetzt Säule. Wenn Sie eine vorhandene Spalte mit dem Namen group
haben , dann sollten Sie das explizit in Ihrer Beziehung angeben:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Wenn Sie den Fehler „Versuchen, die Eigenschaft eines Nichtobjekts abzurufen“ für die Eigenschaft group
erhalten , dann gibt Ihre Beziehung keine Ergebnisse zurück ($user->group
wird NULL
sein ). An diesem Punkt sollten Sie sich vergewissern, dass Ihre Beziehung richtig eingerichtet ist (z. B. die Verwendung der korrekten Zugehörigkeit zu, hasOne, hasMany usw.) und sicherstellen, dass Sie tatsächlich einen verwandten Eintrag in Ihrer Datenbank haben.