LaravelのEloquentのリレーションのID指定が個人的にものすごく分かりづらいので忘備録です。
忘備録なので、他人が読んで理解できるかどうか、は考慮せずに書いてあります。ご了承ください。
利用する関数名 | 第一引数 | 第二引数 | 第三引数 | 第四引数 | 第五引数 | 第六引数 |
---|---|---|---|---|---|---|
hasOne | 相手先モデル | あっち | こっち | |||
belongsTo | 相手先モデル | こっち | あっち | |||
hasMany | 相手先モデル | あっち | こっち | |||
belongsToMany | 相手先モデル | 結合テーブル | こっち | あっち | ||
hasManyThrough | 相手先モデル | 中間モデル | 中間外部 | あっち外部 | こっち | 中間 |
用語
こっち:この関数を記述しているモデル。指定した相手先モデルが参照に利用しているカラム名。
あっち:指定した相手先モデル側がこの関数へ参照を持つために利用しているカラム名。
相手先モデル:この関数を利用することにより結合したいモデルの名前。
結合テーブル:この関数を記述しているモデルと、相手先モデルを結合するために使用するテーブルの名前。
中間モデル:この関数を記述しているモデルと、相手先モデルを結合するために利用するモデルの名前。
中間外部:中間モデルがこの関数を記述しているモデルと結合するのに利用しているカラム名。
あっち外部:相手先テーブルが、中間モデルと結合するのに利用しているカラム名。
なお、原則に沿って関数・テーブル名・モデル名をきちんと作成・使用していればこれらの引数は意識しなくても勝手に補完される。
複雑なのでなるだけこれらの引数は利用しないで済むのが好ましい。