我正在使用 Laravel 4 和 eloquent orm 来构建电影会话数据库。
现在我有以下模型。
class Location extends \Eloquent
{
public $timestamps = false;
public $table = 'movsys_location';
protected $fillable = array('name', 'desc');
public function sessions(){
return $this->hasMany('Session', 'location_id');
}
}
class Session extends \Eloquent
{
public $timestamps = false;
public $table = 'movsys_session';
protected $fillable = array('time');
public function location(){
return $this->hasOne('Location', 'id');
}
}
(注意:这些模型被剥离为必要的代码。)
现在在我的控制器中,我有以下内容。
$Sessions = Session::all();
foreach($Sessions as $Session){
echo (isset($Session->location->name) ? $Session->location->name : 'NO LOCATION');
}
这就是我的数据库的样子:
现在,一切似乎都正常了,但即使两个会话具有相同的位置,只有第一个会话会返回该位置的名称!第二个回声将返回“NO LOCATION”。
任何关于为什么的想法或帮助将不胜感激。如果这个答案不够清楚,请告诉我。