0
0

More than 3 years have passed since last update.

【Laravel】テーブルのリレーションについて

Posted at

リレーションとは

テーブル同士の関連付けのことを言います。
リレーションにはいくつかの種類があり、それぞれ関連付け方が異なります。
早速、リレーションの種類を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

hasOnehasManyと異なり、従テーブルから主テーブルのデータを取り出します。
従テーブル側のPostモデルに以下のように記述します。

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

おわりに

モデルへの記述にしぼって簡単に説明させていただきました。
何かご指摘等あればお申し付けください。

0
0
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
0
0