6

「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;

それは機能します..しかし、私はそれをしなければならないのが本当に好きではありません。

助言がありますか?

4

1 に答える 1