「Users」テーブルと「User_profiles」テーブルの間の非常に単純な関係をモデル化しようとしています。各ユーザーには user_profile があるため、単純な 1 対 1 です。@ http://four.laravel.com/docs/eloquent#one-to-oneで見つかったドキュメントに従って、次の関数を User モデルに追加しました。
public function user_profile()
{
return $this->hasOne('User_profile');
}
これは、私の User_profile モデルで定義された関係です。
public function user()
{
return $this->belongsTo('User');
}
次のようにコントローラーからアクセスしようとしています:
// 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;
残念ながら $user を印刷すると User モデルのフィールドは問題なく出力されますが、関係の痕跡はまったく表示されません。$プロファイルは空です。「関係」配列も空です。これはおそらく埋められるべきだと思います。
ここで提案されているように、「動的プロパティ」を使用しようとしていますhttp://four.laravel.com/docs/eloquent#dynamic-properties
それ以外の場合は、次のようにします。
echo "User's name is: " . $user->user_profile()->first()->first_name . ' ' . $user->user_profile()->first()->last_name;
それは機能します..しかし、私はそれをしなければならないのが本当に好きではありません。
助言がありますか?