【Laravel基礎】リレーション


はじめに

 Laravelでリレーションはちょっと特殊な書き方をします。備忘録として残しておきます。 
 雑多なメモ書きという感じですがご容赦ください。

Laravelでリレーション

 Laravelのリレーションはモデルに書くことで定義できます。
・1対1
・1対多
・多対多
この3パターンで書き方が異なってきます。

1対1

 例えば、ケータイは基本的に一人につき一つです。(複数台持ちはここでは無視してください。)
まずはテーブルを作ります。


phoneテーブルには外部キーであるuser_idを持たせています。そしてモデルで下記のように定義します。

User.php
 public function phone(){
   return $this->hasOne('App\Models\Phone');
 }
Phone.php
 public function user(){
   return $this->belongsTo('App\Models\User');
 }

これで1対1のリレーションをはることが出来ました。

1対多

 1対多の場合も基本的な考え方は変わりません。
例えば、SNSの投稿機能などでは、ユーザー一人につき投稿は複数あります。
まずはテーブルを作成します。


やはりpostsテーブルには外部キーであるuser_idが必要です。
モデルは下記のようになります。

User.php
 public function posts(){
   return $this->hasMany('App\Models\Post');
 }
Post.php
 public function user(){
   return $this->belongsTo('App\Models\User');
 }

このように書きます。

終わりに

これで、userを取得してそれぞれで定義したメソッドを使えばリレーション関係にあるphoneやpostsを引っ張ってくることが出来ます。
 多対多はまた少し違うので今回は割愛します。←