让我们说我们必须遵循以下表格:
游戏
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');
}
}
现在让游戏及其相关问题似乎适用于此代码。 但是我也希望包含答案。为了适应另一个外键关系,如何修改此代码?
答案 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();
在上面的示例中,作者关系将被急切加载,并且还将加载作者的联系人关系。