我已经尝试解决这个问题已经有一段时间了。我想从我的匹配模型中加入这两个范围:
public function scopeMainMatches($query)
{
return $query->where('type', 'main');
}
public function scopeDotaMatches($query)
{
return $query->join('leagues', function ($join) {
$join->on('matches.league_id', '=', 'leagues.id')
->select('matches.*')
->where('leagues.type', '=', 'dota2')
->where('matches.type', '=', 'main');
});
}
所以基本上,当我加入有说服力的关系时,会是这样:
$query = DB::table('matches')
->join('leagues', 'leagues.id', '=', 'matches.league_id')
->select('matches.*')
->where('leagues.type', '=', 'dota2')
->get();
在终端检查期间工作正常。但我需要为Controller连接2个范围,如下所示:
$_matches = \App\Match::mainMatches()
->get()
->load('teamA', 'teamB')
->sortByDesc('schedule');
所以当我尝试连接mainMatches和dotaMatches时,它不会显示在比赛中。尽管当我运行php artisan tinker时,它会返回正确的输出,但不会显示在matchs表中。
$_matches = \App\Match::mainMatches()
->dotaMatches()
->get()
->load('teamA', 'teamB')
->sortByDesc('schedule');
任何想法如何解决? TYIA!
答案 0 :(得分:0)
我已经设法在一个范围内联接了两个表,这里是代码:
public function scopeMainMatches($query) {
return $query->join('leagues','leagues.id','=','matches.league_id')->select('matches.*')->where('matches.type', 'main');
}