Laravelでリレーション先のカラムをid以外にする場合の書き方

Laravelデータベース

今回は、前回記事の補足で、Laravelでリレーション先のカラムをid以外にする場合の書き方について解説します。

前回はhasOneとbelongsToメソッドを使って、リレーションを作る方法を紹介しました。

コードは次のようなシンプルな書き方でOK。

【hasOneメソッド(Userモデルに設定)】

【belongsToメソッド(Addressモデルに設定)】

なぜなら、デフォルトで次のように決まっているからです。

  • テーブルのidカラムは【モデル名_id】とする。Userテーブルなら、【user_id】となる。
  • リレーションを定義するとき、このidカラムを使うなら、細かい情報は入れなくてOK。

ただカラム名をデフォルトから変更したり、idカラム以外で連携させたい場合には、コードを少し変える必要があります。

カラム名を変更してリレーションを作る場合

まずはカラム名を変更した場合。

たとえばアドレステーブルのuser_idカラムを「player_id」にしたとします。

この場合、hasOneメソッドの第二引数には ‘player_id’ と入れます。

belongsToメソッドを使う場合にも同じように、第二引数には ‘player_id’ と入れます。

id以外のカラムと連携させる場合

ユーザーテーブルのidではなく、emailカラムと連携したいとします。

この場合、hasOne関数の第三引数に ‘email’ と入れます。

さいごに

特に理由がなければ、デフォルトのリレーションルールに沿ってリレーションを設定するほうがラクです。

リレーションについては、他の記事でも色々紹介しているので、気になるものがあれば、併せてチェックしてくださいね。

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

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

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

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

【無料プレゼント】

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

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

詳細はこちらをクリック

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

社内にWebアプリ開発経験がなくて、困ってませんか?

「自社でWebアプリ開発を始めていきたい」
という企業様のために、Laravelセミナー・プログラミング教育を実施しています。

【セミナー使用スライド】

詳細はこちらご覧ください

Twitter始めました。
40代からプログラミング!

コメント

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