orWhereHas - группировка параметров по запросу Eloquent - как мне это сделать в Laravel?

В красноречивом запросе, который я строю, я накладываю ограничение наhas отношения с использованием Laravel 4.1whereHas а такжеorWhereHas методы.

В примере приложения для футбола я хочу ограничитьhomeClub а такжеawayClub отношения, так что я могу, результирующий набор выберет, где homeClub = Arsenal ИЛИ awayClub = Arsenal.

Эта проблема возникла изпредыдущий вопрос Кажется, что при использованииorWhereHas метод - результирующий sql нет группаor ограничение.

Запрос (соответствующий отрывок, который помещает ограничения):

$ret
        ->where( function( $subquery ) use ( $ret ){
            $ret->whereHas('homeClub', function ( $query ){
                $query->where('name','Arsenal' );
            })->orWhereHas('awayClub',function ( $query ){
                $query->where('name','Arsenal' );
            });
        })
        ->where( function ( $subquery ) use ( $ret, $parameterValues ){
            $ret->whereHas('season', function ($query) use ( $parameterValues ){
                $query->where('name', $parameterValues['season_names'] );

            });
        } )
        ->whereHas('territory',function( $query ) use ( $parameterValues ){     
               $query->where('region','Australia');

        })->get()->toArray();

Это производит sql:

SELECT * FROM `broadcasts` WHERE 

(SELECT count(*) FROM `uploads` WHERE `broadcasts`.`upload_id` = `uploads`.`id` and `type` = 'international-audience') >= '1' 
and 
(SELECT count(*) FROM `clubs` WHERE `clubs`.`id` = `broadcasts`.`home_club_id` and `name` = 'Arsenal') >= '1' 
or 
(SELECT count(*) FROM `clubs` WHERE `clubs`.`id` = `broadcasts`.`away_club_id` and `name` = 'Arsenal') >= '1' 
and 
(SELECT count(*) FROM `seasons` WHERE `broadcasts`.`season_id` = `seasons`.`id` and `name` = '2012/13') >= '1' 
and 
(SELECT count(*) FROM `territories` WHERE `broadcasts`.`territory_id` = `territories`.`id` and `region` = 'Australia') >= '1'

Но это нечто я хочу, потому что, ссылаясь на красноречивое заявление, клубные запросыгруппироваться и запрос выше либо выбирает ограничения homeClub ИЛИ, awayClub, название сезона, регион территории. Что я'm намерен следующий SQL:

SELECT * FROM `broadcasts` WHERE 

(SELECT count(*) FROM `uploads` WHERE `broadcasts`.`upload_id` = `uploads`.`id` and `type` = 'international-audience') >= '1' 
and 
((SELECT count(*) FROM `clubs` WHERE `clubs`.`id` = `broadcasts`.`home_club_id` and `name` = 'Arsenal') >= '1' 
or 
(SELECT count(*) FROM `clubs` WHERE `clubs`.`id` = `broadcasts`.`away_club_id` and `name` = 'Arsenal') >= '1' )
and 
(SELECT count(*) FROM `seasons` WHERE `broadcasts`.`season_id` = `seasons`.`id` and `name` = '2012/13') >= '1' 
and 
(SELECT count(*) FROM `territories` WHERE `broadcasts`.`territory_id` = `territories`.`id` and `region` = 'Australia') >= '1'

Обратите внимание .. скобки в подзапросе клуба.

Кто-нибудь знает, как бы я написал это как красноречивый запрос? Я действительно неЯ не хочу возвращаться к свободному общению.

Ответы на вопрос(1)

Ваш ответ на вопрос