Laravel 4多对多关系

时间:2014-02-19 12:15:45

标签: php sql laravel-4 eloquent

让我们说我们必须遵循以下表格:

游戏

GameQuestions

问题

答案

现在,为了获得与单个游戏相关的问题,我得到了以下控制器片段:

if ($code) {
            $gamedata = Game::with('questions')
                ->where('secretcode', $code)
                ->get();
        }else{
            $gamedata = Game::with('questions')->get();

        }

继承我的游戏模式:

class Game extends Eloquent {


    /*table definition*/
    protected $table = 'games';


        public function questions(){
        return $this->belongsToMany('Question', 'gamequestions', 'game_id', 'question_id');
    }

}

问题模型:

class Question扩展了Eloquent {

/*table definition*/
protected $table = 'questions';

//questions relation
public function answers(){
    return $this->hasMany('Answer', 'question_id', 'id');
}

}

现在让游戏及其相关问题似乎适用于此代码。 但是我也希望包含答案。为了适应另一个外键关系,如何修改此代码?

1 个答案:

答案 0 :(得分:1)

我相信你可以嵌套关系;

if ($code) {
            $gamedata = Game::with('questions.answers')
                ->where('secretcode', $code)
                ->get();
        }else{
            $gamedata = Game::with('questions.answers')->get();

        }

请参阅文档http://laravel.com/docs/eloquent#eager-loading - 搜索嵌套关系

  

$ books = Book :: with('author.contacts') - > get();

     

在上面的示例中,作者关系将被急切加载,并且还将加载作者的联系人关系。