概要
投稿記事を投稿したユーザーや商品カートの保有ユーザーなど、データが所属しているユーザーを取り出す場合。1対多のリレーションの多に属するデータから1のデータを取得する。
データモデルにリレーションを設定することで、そのデータが属するユーザーを属性として取り出すことができる。
手順
データモデルにuser()メソッドを定義し、そのデータがUserモデルのデータに属していることを記述する。メソッド名はUserの単数形となっていることに注意。
| 1 2 3 4 5 6 7 8 | class モデル extends Model {     ....     // リレーション設定     public function user() {       return $this->belongsTo('App\User');     } } | 
これによってデータモデルにuser属性が追加され、それを介してUserの各属性を取得することができる。
モデルデータ->user->name
例
例えばユーザー認証は設定済みとして、ユーザーの投稿記事モデルPostsを定義済みとする。Postモデルは記事の投稿ユーザーのIDをuser_idとして持ち、外部キー制約を設定している。
| 1 2 3 4 5 6 7 8 9 10 11 12 | mysql> DESCRIBE posts; +------------+-----------------+------+-----+---------+----------------+ | Field      | Type            | Null | Key | Default | Extra          | +------------+-----------------+------+-----+---------+----------------+ | id         | bigint unsigned | NO   | PRI | NULL    | auto_increment | | user_id    | bigint unsigned | NO   | MUL | NULL    |                | | comment    | varchar(200)    | NO   |     | NULL    |                | | image_name | varchar(100)    | NO   |     | NULL    |                | | created_at | datetime        | NO   |     | NULL    |                | | updated_at | datetime        | NO   |     | NULL    |                | +------------+-----------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec) | 
まずPostモデルにuser()メソッドを定義し、belongsTo(App\User)を戻り値とする。
- belongsTo()は- Postモデルが- Userモデルに属することから、- Postのインスタンスが属する- Userのインスタンスを返す
- このリレーション設定によって、Postモデルにuserプロパティーが加えられ、Postインスタンスが属するUserのインスタンスを取得できる
| 1 2 3 4 5 6 7 8 | class Post extends Model {     ....     // リレーション設定     public function user() {       return $this->belongsTo('App\User');     } } | 
これでPostインスタンスのuserプロパティーに、その記事を投稿したユーザーへの参照が格納される。
たとえば投稿記事が$postに格納されているとして、ビュー側でユーザーを取得して表示する場合、以下のようなディレクティブになる。
| 1 | <p>{{ $post->user->name }}さんの記事 : {{ $post->comment }}</p> |