id以外でリレーションする場合【Laravel超入門講座7の補足】

Laravel 入門講座

Laravel超入門講座、今回は、前回の補足です。

前回は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講座はこちらをどうぞ。

コメント

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