2

Laravel 4 と雄弁な 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');
}

そして、これは私のデータベースがどのように見えるかです: 「セッション」 「場所」

これで、すべてが機能しているように見えますが、両方のセッションの場所が同じであっても、最初のセッションのみが場所の名前を返します! 2 番目のエコーは「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 に答える