平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【PHP】[Laravel]モデル同士のリレーションを定義しよう

今回のテーマ

Laravelにてテーブル同士のリレーションを定義する際に
記載する方法を記載します。

環境

Laravel:5.5.50
PHP:7.3.11

条件

今回はpost(投稿)、users(ユーザ)の関係を考える。
・post(投稿)は固有のusers(ユーザ)がしたもの
・users(ユーザ)はそれぞれ複数post(投稿)することができる

post(一)-users(多)の関係と考えることができる

設定方法

それぞれのモデルに以下のように設定する。
belongsTohasManyメソッドをそれぞれのモデルに記載する。

// Post.php 投稿
public function users(){
        return $this->belongsTo('APP\User');
    }

// User.php ユーザ
public function posts(){
        return $this->hasMany('App\Post');
    }

まとめ

設定方法は簡易ですが、一対多、一対一、多対多なのか関係を
見極めるのが重要になるかと思います。
これに関してはE-R図に書くとわかりやすいので、関係を考える際は
活用して、しっかり設計できるようにしたい

参考

Eloquent:リレーション 5.5 Laravel