構文を単純化するために、return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
を考えてみてください。 次のようなパラメータ:
- リンクするモデル
-
id
にリンクしている外部テーブル(リンク先のテーブル)の列 現在のテーブルの列(3番目のパラメーターを指定している場合を除き、その場合はそれを使用します) - 使用する必要がある現在のテーブルの列-つまり、他のテーブルの外部キーを
id
にリンクさせたくない場合 現在のテーブルの列
あなたの状況では、store_id
を使用したためです libraries
内 テーブル、あなたはあなた自身のために人生を楽にしました。 Store
で定義すると、以下が完全に機能するはずです。 モデル:
public function libraries()
{
return $this->hasMany('App\Library');
}
舞台裏では、Laravelは自動的にid
をリンクします Store
の列 store_id
へのテーブル Library
の列 テーブル。
明示的に定義したい場合は、次のようにします。
public function libraries(){
return $this->hasMany('App\Library', 'store_id','id');
}
- モデルの標準では、単数形の関数はbelongsToを返し、複数形の関数はhasManyを返します(つまり、
$store->libraries() or $library->store()
。