2013-06-05 2 views
2
:

나는 영화 세션 데이터베이스를 구축하기 위해 Laravel 4와 eloquent orm을 사용하고 있습니다.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'); 
    } 
} 

(참고 :.이 모델은 필요한 코드에 제거됩니다)

지금 내 컨트롤러, I는 다음이있다.

$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