1 対多の関係と Eloquent に苦労しています。イベント (ショー イベントのように) があり、場所があります。各イベントは 1 つの場所に関連付けられていますが、各場所は多くのイベントをホストするために使用される場合があります。(1)場所から(多数)イベントへ。
ここに私のモデルがあります:
class Iaevent extends Eloquent {
public static $timestamps = true;
public function locations() {
return $this->has_one('Location');
}
}
class Location extends Eloquent {
public static $timestamps = true;
public function iaevents() {
return $this->has_many('Iaevent');
}
}
エコーアウトしようとすると:
echo $iaevent->locations()->first()->company;
//or
Iaevent::find(1)->locations()->first()->company;
エラーが発生します:
Unknown column 'iaevent_id' in 'where clause'
SQL: SELECT * FROM `locations` WHERE `iaevent_id` = ? LIMIT 1
現在...「iaevent_id」は場所テーブルにありません。むしろ、1 つの場所が多くのイベントに適用される可能性があるため、「location_id」を「ievents」テーブルに入れますが、その逆は決してありません。ここで私は何を間違えましたか?
Laravel フォーラムで、誰かが私の Iaevent モデルで「has_one」を「belongs_to」に置き換えることを提案しました。これを行うと、エラーが発生しますTrying to get property of non-object
他の方法で関係をテストすると、echo Location::find(1)->iaevents()->first()->name;
問題なく動作します。