我正在努力解决一对多的关系和雄辩的问题。我有活动(如演出活动),我有地点。每个活动都与一个地点相关联,但每个地点可能会用于举办许多活动。(一)位置到(许多)事件。
这是我的模型:
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”不在位置表中。相反,我将“location_id”放在“ievents”表中,因为一个位置可以应用于许多事件,但绝不会反过来。我在这里做错了什么?
在 Laravel 论坛上,有人建议在我的 Iaevent 模型中将 'has_one' 替换为 'belongs_to'。当我这样做时,我得到一个错误Trying to get property of non-object
以另一种方式测试关系,echo Location::find(1)->iaevents()->first()->name;
效果很好。