LaravelのhasManyメソッドの使い方【現役エンジニアが解説】

PROGRAM

今回は、LaravelのhasManyメソッドの使い方について、簡単に解説していきます。

hasManyメソッドとは

hasManyメソッドとはLaravelのモデルに用意されたメソッドです。

1対多のデータを連携して取得することを目的に使われるメソッドです。

例えば、執筆者と記事のデータがあることを想定すると、一人の執筆者(1)から、その人が書いた記事(多)を取得する際等に使われます。

モデルファイルで準備

一人の執筆者から付随する記事を取得することを考えます。

執筆者のモデルをAuthor、記事のモデルをPostと想定します。

class Author extends Model
{
    public function post()
    {
        return $this->hasMany('App\Models\Post');
    }
}

すると、上記のようにAuthorのモデルに、引数をPostモデルにしたhasManyメソッドを使用するメソッドを一つ実装するだけで準備が整います。

コントローラファイルで使う

Authorモデルに実装したpostsメソッドを使うだけで1対多のデータを取得できます。

コントローラでの使い方は、以下のように、まずAuthorのモデルから執筆者を特定します。

$posts = Author::find($author_id)->posts();

その後で、実装したpostsメソッドを使うことで、その執筆者の書いた記事を取得することができます。