Efter att ha hjälpt genom chatten var problemet att det fanns en befintlig kolumn som heter group
, och relationsmetoden kallades också group
, så värdet för tabellkolumnen hade företräde framför relationsmetoden.
Byt namn på relationsmetoden eller group
kolumn till något som group_id
är båda lämpliga lösningar (jag skulle föreslå group_id
rutt).
Ursprungligt svar:
Du hämtar gruppen genom en magisk egenskap, inte direkt från metoden.
echo User::find(1)->group->name;
Om du hämtar group()
metod, kommer den att returnera relationsobjektet, inte utföra några frågor och hämta det relaterade objektet.
Dessutom kommer Eloquent att göra antaganden om vad dina kolumnnamn för främmande nyckel är. Group
skulle automatiskt översättas till ett group_id
kolumn. Om du har en befintlig kolumn som heter group
, då bör du ange det uttryckligen i din relation:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Om du får felmeddelandet "Trying to get property of non-object" för egenskapen group
, då ger din relation inga resultat ($user->group
kommer att vara NULL
). Vid den tidpunkten bör du se till att din relation är korrekt inställd (t.ex. genom att använda rätt belongsTo, hasOne, hasMany, etc.), och se till att du faktiskt har en relaterad post i din databas.