リレーションとは
テーブル同士の関連付けのことを言います。
リレーションにはいくつかの種類があり、それぞれ関連付け方が異なります。
早速、リレーションの種類を1つ1つ見ていきたいのですが、ここでは主テーブルをuserテーブル、従テーブルをpostテーブルとして説明していきます。
※今回は、コントローラーやビューの記述は割愛させていただきます。
リレーションの種類
has One
「1対1」の関係で、主テーブルは従テーブルからデータを引っ張ってくることができます。
主テーブル側のUserモデルに以下のように記述します。
User.php
public function post()
{
return $this->hasOne('App\Models\Post');
}
has Many
「1対多」の関係で、これもhasOne
と同様、主テーブルが従テーブルからデータを引っ張ってきます。
主テーブル側のUserモデルに以下のように記述します。
hasOne
は1対1でデータを1つしか取り出さないのでpost
と単数形でしたが、hasMany
では複数のデータを取り出すのでposts
と複数形にします。
User.php
public function posts()
{
return $this->hasMany('App\Models\Post');
}
belongs To
hasOne
やhasMany
と異なり、従テーブルから主テーブルのデータを取り出します。
従テーブル側のPostモデルに以下のように記述します。
Post.php
public function user()
{
return $this->belongsTo('App\Models\User');
}
おわりに
モデルへの記述にしぼって簡単に説明させていただきました。
何かご指摘等あればお申し付けください。