sql >> Databasteknik >  >> RDS >> Mysql

Laravel tillhör att kasta odefinierat fel

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.




  1. Olaglig blandning av sorteringar för drift för datum/tid jämförelse

  2. Databasfel:Det finns ingen rad vid position 0

  3. Hur kan jag få MySQL att skriva utfiler som en annan användare?

  4. Doktrin 2-mappning som refererar till unik nyckel