2017-02-28 50 views
1

我有比赛的球队的所有冠军,一场比赛可以有很多>获取那些雄辩

public function championships() 
{ 
    return $this->hasMany(Championship::class); 
} 

和冠军hasOne类别。在类别中,我有isTeam属性。

现在我需要一个功能,让我所有的冠军在类别表中有isTeam = 1

public function teamChampionships() 
{ 

} 

当然,我已经定义:$tournament->championships$championship->category

在我的控制,我让所有的人:

 $tournament = Tournament::with('championship.category')->find($tournament->id); 

任何想法???

回答

1

尝试

$tournament = Tournament::with(['championships' => function ($query) { 
    $query->whereHas('category', function($subquery) { 
     $subquery->where('isTeam', '=', 1); 
    }); 
}])->get(); 

如果上述方法无效,尝试不同的方法。定义分类模型isTeam()范围

public function scopeIsTeam($query) { 
    return $query->where('isTeam', 1); 
} 

然后你可以使用它像这样

$tournament = Tournament::with('championships.categoryIsTeam') 
->find($tournament->id); 

更妙的是,在世锦赛创造另一个范围是只加载队

public function categoryTeam() { 
    return $this->hasOne(Category::class)->isTeam(); 
} 

对不起太多信息。其中一名应该完成这项工作。

+0

不错!我会马上尝试 –

+0

Tx为您提供帮助,我总是忘记如何去做 –