2

我正在使用 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”。

任何关于为什么的想法或帮助将不胜感激。如果这个答案不够清楚,请告诉我。

4

1 回答 1

1

试试这个代替你的:

class Session extends \Eloquent
{
    public $timestamps = false;
    public $table = 'movsys_session';
    protected $fillable = array('time');

    public function location(){
        return $this->belongsTo('Location');
    }
}
于 2013-06-05T02:01:45.397 回答