Ich versuche, eine recht einfache Beziehung zwischen der Tabelle 'Benutzer' und der Tabelle 'Benutzerprofile' zu modellieren. Jeder Benutzer hat ein user_profile, also ist es einfach eins zu eins. Richtet sich nach den gefundenen docs @http://four.laravel.com/docs/eloquent#one-to-one ich die folgende Funktion zu meinem User-Modell hinzugefügt haben:Laravel 4 Eloquentes ORM-Zugriff auf 1: 1-Beziehung über dynamische Eigenschaften
public function user_profile()
{
return $this->hasOne('User_profile');
}
und dies ist die Beziehung in meinem user_profile Modell definiert:
public function user()
{
return $this->belongsTo('User');
}
ich von der für den Zugriff versuche Controller wie folgt aus:
// Get current user
$user = User::find(Auth::user()->id);
$profile = $user->user_profile;
print_r($user);
print_r($profile);
echo "User's name is: " . $user->user_profile->first_name . ' ' . $user->user_profile->last_name;
Leider Druck $ Benutzer druckt die Modell Benutzerfelder ganz gut, aber zeigt keine Spur von einer Beziehung; $ Profil ist leer. Das Array 'relations' ist ebenfalls leer, und ich schätze, es sollte vielleicht gefüllt sein.
Ich versuche, die ‚dynamischen Eigenschaften‘ zu verwenden, wie hier vorgeschlagen http://four.laravel.com/docs/eloquent#dynamic-properties
Andernfalls, wenn ich einfach:
echo "User's name is: " . $user->user_profile()->first()->first_name . ' ' . $user->user_profile()->first()->last_name;
Es funktioniert .. aber ich weiß wirklich nicht, wie das zu tun, die .
Irgendwelche Vorschläge?
I L4 lieben, aber dieser Aspekt muss eine Menge Leute heraus fangen. Ich hatte ein ähnliches Problem, aber in meinem Fall war es mit Produkttypen zu tun und es stellte sich heraus, dass ich die Beziehungsmethode 'productType()' anstelle von 'producttype()' nennen musste. Danke für das Posten und hoffentlich hilft es ein paar anderen. – JamesG
Ja, außerdem ist es ärgerlich, dass das Umbenennen für Objekte wie Tabellen und die zugehörigen Tabellen erfolgt, aber Sie kehren zu der Unterstringungsbenennung für die Tabellenfelder selbst zurück, dh first_name. Diese Inkonsistenz ist leicht irritierend. – John