sql >> Database >  >> RDS >> Mysql

Laravel hoort bij het gooien van een ongedefinieerde fout

Na het helpen via de chat, was het probleem dat er een bestaande kolom was met de naam group , en de relatiemethode heette ook group , dus de waarde van de tabelkolom had voorrang op de relatiemethode.

Hernoemen van de relatiemethode, of de group kolom naar iets als group_id zijn beide geschikte oplossingen (ik stel voor de group_id route).

Oorspronkelijk antwoord:

Je haalt de groep op via een magische eigenschap, niet rechtstreeks van de methode.

echo User::find(1)->group->name;

Als u de group() . ophaalt methode, zal het het relatie-object retourneren, geen query's uitvoeren en het gerelateerde object ophalen.

Ook zal Eloquent aannames doen over wat de kolomnamen van uw buitenlandse sleutel zijn. Group zou automatisch vertalen naar een group_id kolom. Als u een bestaande kolom heeft met de naam group , dan moet u dat expliciet specificeren in uw relatie:

public function group () 
{
    return $this->belongsTo('Group', 'group');
}

Als u de foutmelding 'Proberen om eigenschap van niet-object te krijgen' ontvangt voor de eigenschap group , dan levert uw relatie geen resultaten op ($user->group wordt NULL ). Op dat moment moet u ervoor zorgen dat uw relatie correct is ingesteld (bijv. door de juiste behoortTo, hasOne, hasMany, enz.) te gebruiken en ervoor te zorgen dat u daadwerkelijk een gerelateerd item in uw database heeft.




  1. Hoe gegevens in de mysql-tabel te laden, maar de lege regels te negeren

  2. Hoe 0 te retourneren in plaats van null bij gebruik van COUNT in MySQL

  3. PostgreSQL-fout 42501:toestemming geweigerd voor schema

  4. PostgreSQL-kolom foo bestaat niet waar foo de waarde is