はじめに
この記事はLaravelを学習する過程で得られた結果の備忘録です
誤りや追記が必要な場合は都度修正します
Laravelのリレーション設定
次のように hasMany メソッドが存在する場合、Laravelは外部キーを自動的に推測します。
そこで発生しやすいエラーが、存在しない外部キーを参照することです。
本来ならばcustomer_id
を参照して欲しいところcustomer_customer_id
というカラム名を自動的に推測して参照する場合があります。このような推測が誤って行われると、エラーの原因になります。
そのためhasMany と belongsTo メソッドそれぞれの引数に対して、外部キーを指定することで、正しい外部キーを参照することができます。
修正前
customer.php
public function customer_contacts()
{
return $this->hasMany(CustomerContact::class);
}
customer_contacts.php
public function customer()
{
return $this->belongsTo(Customer::class);
}
修正後
customer.php
public function customer_contacts()
{
return $this->hasMany(CustomerContact::class,'customer_id');
}
customer_contacts.php
public function customer()
{
return $this->belongsTo(Customer::class,'customer_id');
}
まとめ
Laravelでリレーションの設定を組み込む場合は、メソッドの引数に対して外部キーを与えることで、確実に外部キーを参照することができるようになります。この設定により、予期しないエラーを防ぎ、アプリケーションの信頼性を向上させることができます。