sql >> Database teknologi >  >> RDS >> Mysql

Laravel hører til at smide udefineret fejl

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.




  1. MySQL Vælg Statement DISTINCT for flere kolonner

  2. Lave beregninger i MySQL vs PHP

  3. Flyway på produktionsdatabase - Migration Checksum mismatch

  4. Sådan opretter du markøren inde i procedureteksten i plsql