Laravelで、親モデルのリレーションの外部キーを設定する方法について解説いたします。
Laravel のModel は本当に便利ですね!
親の主キーと一致する場合
Eloquentは、親モデル名に基づきリレーションの外部キーを決定します。この場合、Phoneモデルは自動的にuser_id外部キーを持っているとみなします。
この規約をオーバーライドしたい場合は、hasOneメソッドに2番目の引数を渡します。
1 |
return $this->hasOne(Phone::class, 'foreign_key'); |
親の主キーと一致しない場合
リレーションでidまたはモデルの$primaryKeyプロパティ以外の主キー値を使用する場合は、3番目の引数をhasOneメソッドに渡します。
1 |
return $this->hasOne(Phone::class, 'foreign_key', 'local_key'); |
公式サイト
Eloquent:リレーション 8.x Laravel