LaravelでPivotで中間テーブルを簡単に作る方法【belongsToManyリレーション】

Laravelデータベース

Laravelでは二つのテーブルを組み合わせて、簡単に中間テーブルを作ることができます。

どのようにして作るか、実際の手順をステップごとに解説していきます。

今回は、ユーザーテーブルとロール(役割)テーブルを組み合わせて、【ユーザーロールテーブル】を作っていきます。

その際、ユーザーテーブルとロールテーブルの間には、belongsToManyメソッドを使って、リレーションを構築します。

言葉はむずかしいですが、手順自体はわりとシンプルなので、まずは一度つくってみてください。

LaravelでPivotテーブルを簡単に作る方法【belongsToMany】

次の6ステップで操作を解説していきます。

  1. ユーザーモデルにロールモデルへのリレーション追加
  2. ロールモデルとロールテーブル作成
  3. ロールモデルにユーザーモデルへのリレーション追加
  4. ロールテーブルのマイグレーションファイル編集
  5. ユーザー×ロールテーブル作成
  6. テスト

(バージョンはLaravel8を使って説明していきます。)

①ユーザーモデルとテーブル作成

ユーザーモデルはデフォルトで準備されています。

App\Models\Userとのリレーションを加えます。

Pivotテーブルにタイムスタンプをいれる

なお、デフォルトでは自動的にタイムスタンプ(created_at、updated_atへの値) がはいりません。

->withTimestamps(); を付けておくと、タイムスタンプ(created_at, updated_at )が自動的に維持されます。

②ロールモデルとロールテーブル作成

ロールモデルとロールテーブルを作成します。

③ロールモデルにユーザーモデルへのリレーション追加

App\Models\Roleファイルを開き、次を追加してください。

Userモデルとのリレーションを加えます。

④ロールテーブルのマイグレーションファイル編集

database/migrations の中にできたマイグレーションファイルを編集します。

次の1行を加えてください。

⑤ユーザー×ロールテーブル作成

ユーザーテーブルとロールテーブルを連結させた【role_user】テーブルを作ります。

◆次のようにコマンドを打ってください。

◆database/migrations の中にできたマイグレーションファイルに次の2行を加えます。

◆マイグレートします。

⑥テスト

これで準備完了です。

最後にテストしてみましょう。

phpMyAdminにログインし、データベース内に【role_user】テーブルを確認してみてください。

テスト用に、roleテーブル、userテーブル、role_userテーブルにダミーで情報をいれておきます。

その後、ルート設定ファイル(routes/web.php)に下記を加えます。

Laravelを起動し、【/pivot】ページを確認してみます。

上記のように、role_userテーブルにいれた情報が取り出せれば、無事成功。

ロールを割り当てたり、取り外したりするには attachやdetachというメソッドが使えます。

詳しくは、こちらの記事にて解説しています。

 

Laravelデータベース Laravel入門講座

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

 

Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
デプロイ講座付。StripeやChatGPT連携など過去10回分のセミナー動画視聴可能。

Laravel実践スキルをのばしたい方におすすめです。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました