1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelのリレーション管理:外部キーを明示的に指定する方法

Posted at

はじめに

この記事はLaravelを学習する過程で得られた結果の備忘録です

誤りや追記が必要な場合は都度修正します

Laravelのリレーション設定

次のように hasMany メソッドが存在する場合、Laravelは外部キーを自動的に推測します。

そこで発生しやすいエラーが、存在しない外部キーを参照することです。

本来ならばcustomer_idを参照して欲しいところcustomer_customer_idというカラム名を自動的に推測して参照する場合があります。このような推測が誤って行われると、エラーの原因になります。

そのためhasManybelongsTo メソッドそれぞれの引数に対して、外部キーを指定することで、正しい外部キーを参照することができます。

修正前

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でリレーションの設定を組み込む場合は、メソッドの引数に対して外部キーを与えることで、確実に外部キーを参照することができるようになります。この設定により、予期しないエラーを防ぎ、アプリケーションの信頼性を向上させることができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?