2013-06-05 4 views
2

Я использую Laravel 4 и eloquent orm для создания базы данных сеансов фильмов.Eloquent ORM Movie Location

Теперь у меня есть следующие модели.

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'); 
} 

И это то, что выглядит моя база данных, как: 'Sessions' 'Locations'

Теперь, кажется, что все работает, но даже если оба сеанса имеют одинаковое расположение, только первая сессия будет возвращать имя Местоположение! Второе эхо возвращает «NO LOCATION».

Любая идея или помощь относительно того, почему было бы полезно. Если этот ответ не достаточно ясен, дайте мне знать.

ответ

1

Попробуйте это на месте твоего:

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

    public function location(){ 
     return $this->belongsTo('Location'); 
    } 
} 
+0

Отлично! Большое спасибо. – MichaelH