Efter at have hjulpet gennem chat, var problemet, at der var en eksisterende kolonne kaldet group
, og relationsmetoden blev også kaldt group
, så tabelkolonnens værdi havde forrang over relationsmetoden.
Omdøbning af relationsmetoden eller group
kolonne til noget som group_id
er begge egnede løsninger (jeg vil foreslå group_id
rute).
Oprindeligt svar:
Du henter gruppen gennem en magisk egenskab, ikke direkte fra metoden.
echo User::find(1)->group->name;
Hvis du henter group()
metode, vil den returnere relationsobjektet, ikke udføre nogen forespørgsler og hente det relaterede objekt.
Eloquent vil også gøre antagelser om, hvad dine udenlandske nøglekolonnenavne er. Group
vil automatisk oversætte til et group_id
kolonne. Hvis du har en eksisterende kolonne kaldet group
, så skal du angive det eksplicit i dit forhold:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Hvis du modtager fejlen "Prøver at få egenskab af ikke-objekt" for egenskaben group
, så giver dit forhold ingen resultater ($user->group
vil være NULL
). På det tidspunkt bør du sørge for, at dit forhold er konfigureret korrekt (f.eks. ved at bruge den korrekte belongsTo, hasOne, hasMany osv.), og sikre dig, at du rent faktisk har en relateret post i din database.