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の教科書の詳細を見る

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

【無料プレゼント】

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

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

詳細はこちらをクリック

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

Laravelの本を書きました。


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

Laravel10対応

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

書籍の詳細を見てみる

Laravelの本を書きました。


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

Laravel10対応

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

書籍の詳細を見てみる


Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
セミナーで、StripeやChatGPT連携、デバックなど実践スキルを分かりやすく学べます。

ラボの案内を見てみる

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