Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel gehört zum Werfen von undefinierten Fehlern

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.