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というメソッドが使えます。

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

 

コメント

タイトルとURLをコピーしました