Laravelで中間テーブルに複数の値を保存する

Laravelデータベース

Laravelでは、中間テーブルに複数の値を一度に保存することができます。

中間テーブルに保存用のフォームの作成方法も併せて、手順を解説していきますね。

Junko
Junko

Laravelの中間テーブルは便利です。

ぜひ、色々な使い方をおさえていきましょう♪

Laravelで中間テーブルに複数の値を保存する方法

まずプロジェクトを作成する等、準備をお願いします。

こちらの記事の④あたりまで進めておいてください。

(中間テーブルには、値を保存しなくてOKです。)

このあとの手順を解説します。

① ルート設定を作成する

フォーム表示用と保存用の2つを作成します。

【web.php】

② コントローラーを作成する

下記のコマンドを入力して、コントローラーを作成します。

作成した ClubControllerを開きます。

フォームを表示するためのindexメソッドを追加します。

【ClubController.php】

③ ビューファイルを作成する

resources/view/dashboard.blade.php の中に、次のようにフォームを作成します。

【dashboard.blade.php】

ブラウザに表示すると、次のようになります。

Junko
Junko

なお上記コードでは、CSSはTailwindを使っています。環境によって、classの部分は変えてくださいね。

④ 保存用のコードをつくる

再びClubControllerを開きます。

フォームを保存するためのstoreメソッドを追加します。

【ClubController.php】

最初にレコードのid部分を指定します。そのあと、レコードの各カラムにいれる値を連想配列の形で指定します。

なお今回はattachメソッドを使いました。attachは、同じ値の重複保存も可能です。

重複を避けたい場合は、syncメソッドを使ってくださいね。

Junko
Junko

多対多のリレーションで中間テーブルに値を保存する方法は、こちらの記事にまとめています。

⑤ テストをする

それでは、いよいよテストです。

ブラウザに値をいれて、きちんと中間テーブル club_userに保存されるか、チェックしてみてください。

 

⑥ おまけ:中間テーブル保存時にタイムスタンプも追加する方法

なお、デフォルトのままだと中間テーブルに保存したとき、タイムスタンプカラム(created_at, updated_at) に値が入りません。

タイムスタンプに値をいれるようにするには、リレーションを設定する際に、次のようにwithTimestampsを追加します。

【User.php】

withTimestampsを加えると、中間テーブルに、次のようにcreated_at、updated_atカラムに日時情報が入ります。

【club_userテーブル】

以上となります。

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をコピーしました