LaravelのbelognsToManyの使い方について紹介。

こんにちは!
個人開発者の南です。

今回は、LaravelのEloquentで中間テーブル先のデータを取得する時は、「belongsToMany」メソッドを使用します。

この記事では、belongsToManyの基本的な使い方と、belongsToManyをカスタマイズして使う方法について紹介していきます。

belongsToManyについて

belongsToManyは、LaravelのORMで使用するメソッドの1つです。

belongsToManyを使用する場面は、例えば下記のように中間テーブルのデータを参照する時などに使用します。

usersテーブル

id name email
1 テスト test@example.com

rank_userテーブル(中間テーブル)

id user_id rank_id
1 1 2

ranksテーブル

id name
1 ランク1
2 ランク2

最後に、使用する場合はまずModel側に下記のように記載します。

Model側に記載ができたら、実際に使用する時に下記のように書くことでデータを取得することができます。

belongsToManyの使い方について

Laravelの規約に沿っている場合は、先程紹介した方法で中間テーブルを介してデータを取得することができます。

そのためには、それぞれ下記のようにテーブル名を定義する必要があります。

・usersテーブル
・rank_userテーブル
・ranksテーブル

規約に沿っていない場合に、belongsToManyを使う方法

ただ、開発状況によっては上記のように規約に沿っていない場合もあるかと思います。

その時は、belongsToManyをカスタマイズすることで解決することができます。

belongsToManyには、それぞれ下記のように引数をすることができます。

例えば、中間テーブル名が規約に沿っている「rank_user」ではなく、「user_rank_tbl」という名前だったとしましょう。

その場合は、下記のように記載します。

これで先程紹介したように、下記のコードでRankテーブルの各データにアクセスすることができるようになります。

まとめ

今回は、LarravelのbelongsToManyの使い方とカスタマイズして使う方法について紹介しました。

この記事があなたのお役に立てば幸いです。

この記事を書いた人

南 健太郎

1991年生まれ。都内でエンジニアをしています。
このブログでは、個人開発や日々の技術に関する情報などを発信していきます。