Laravel – データが属しているユーザーを取り出す

概要

投稿記事を投稿したユーザーや商品カートの保有ユーザーなど、データが所属しているユーザーを取り出す場合。1対多のリレーションの多に属するデータから1のデータを取得する。

データモデルにリレーションを設定することで、そのデータが属するユーザーを属性として取り出すことができる。

手順

データモデルにuser()メソッドを定義し、そのデータがUserモデルのデータに属していることを記述する。メソッド名はUserの単数形となっていることに注意。

これによってデータモデルにuser属性が追加され、それを介してUserの各属性を取得することができる。

モデルデータ->user->name

例えばユーザー認証は設定済みとして、ユーザーの投稿記事モデルPostsを定義済みとする。Postモデルは記事の投稿ユーザーのIDをuser_idとして持ち、外部キー制約を設定している。

まずPostモデルにuser()メソッドを定義し、belongsTo(App\User)を戻り値とする。

  • belongsTo()PostモデルがUserモデルに属することから、Postのインスタンスが属するUserのインスタンスを返す
  • このリレーション設定によって、Postモデルにuserプロパティーが加えられ、Postインスタンスが属するUserのインスタンスを取得できる

これでPostインスタンスのuserプロパティーに、その記事を投稿したユーザーへの参照が格納される。

たとえば投稿記事が$postに格納されているとして、ビュー側でユーザーを取得して表示する場合、以下のようなディレクティブになる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です