I Datenbanktabellen wie diese:Laravel erhalten Eloquent Beziehung mit gleichen Namen wie sein Attribut
shoot: id, name, programme
programme: id, name
Die eloquente Beziehung im Sproß ist wie folgt definiert:
public function programme() {
return $this->belongsTo('App\Programme', 'programme', 'id');
}
Wenn dd()
verwenden, I kann das sehen funktioniert das:
dd(Shoot:where('id','=',1)->with('programme')->first());
// prints the object with programme listed under the relationship
Allerdings wenn ich eifrig lade E schieße und versuche, das Programmobjekt zu bekommen, erhalte ich stattdessen das Shoot-Attribut "Programm". Z.B .:
$shoot = Shoot:where('id','=',1)->with('programme')->first();
echo $shoot->programme; // returns 1, not App\Programme object.
Gibt es eine Lösung für dieses Problem ohne Massen der Codebasis neu zu schreiben?
Dies liegt daran, dass Ihre Beziehung den gleichen Namen wie eines Ihrer Attribute hat. Es gibt stattdessen Ihr Attribut zurück. – devk
Halten Sie sich an die Namenskonventionen 'programme' -' programme_id' und Sie sollten gut gehen ... Was ist Programm überhaupt? Verwenden Sie Englisch während der Codierung. (google markiert es als falsch buchstabiertes Wort) – Kyslik
Es ist "richtiges Englisch";) - britische englische Rechtschreibung des Programms, z. ein Fernsehprogramm. Programm in britischem Englisch bezieht sich auf Softwareprogramme explizit. – kirgy