LoginSignup
1
1

More than 1 year has passed since last update.

【Laravel基礎】リレーション

Posted at

はじめに

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

Laravelでリレーション

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

1対1

 例えば、ケータイは基本的に一人につき一つです。(複数台持ちはここでは無視してください。)
まずはテーブルを作ります。
スクリーンショット 2021-09-16 23.18.51.png

スクリーンショット 2021-09-16 23.18.06.png
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の投稿機能などでは、ユーザー一人につき投稿は複数あります。
まずはテーブルを作成します。

スクリーンショット 2021-09-16 23.18.51.png
スクリーンショット 2021-09-16 23.26.47.png

やはり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を引っ張ってくることが出来ます。
 多対多はまた少し違うので今回は割愛します。←

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1