2017-05-09 1 views
0

내가있어 여러 통화를 집계되지 않는 :

$cars->whereHas("finance", function (Eloquent\Builder $query) { 
    $query->where('term'...) 
} 
$cars->whereHas("finance", function (Eloquent\Builder $query) { 
    $query->where('payment'...) 
} 

이 필요없이 where (들)을 함께 집계 할 수있는 방법이 있나요 전화 번호 : whereHas 안에 where 번의 모든 전화를 겁니까? 내가 좋아하는 것

SELECT id 
FROM `cars` 
WHERE EXISTS 
    (SELECT `finance`.`payment` as payment 
    FROM `finance` 
    INNER JOIN `car_finance` ON `finance`.`id` = `car_finance`.`finance_id` 
    WHERE `car_finance`.`car_id` = `cars`.`id` 
     AND `payment` >= 50) 
    AND EXISTS 
    (SELECT * 
    FROM `finance` 
    INNER JOIN `car_finance` ON `finance`.`id` = `car_finance`.`finance_id` 
    WHERE `car_finance`.`car_id` = `cars`.`id` 
     AND `payment` <= 200) 
    AND EXISTS 
    (SELECT * 
    FROM `finance` 
    INNER JOIN `car_finance` ON `finance`.`id` = `car_finance`.`finance_id` 
    WHERE `car_finance`.`car_id` = `cars`.`id` 
     AND `term` = 48) 
    AND EXISTS 
    (SELECT * 
    FROM `finance` 
    INNER JOIN `car_finance` ON `finance`.`id` = `car_finance`.`finance_id` 
    WHERE `car_finance`.`car_id` = `cars`.`id` 
     AND `deposit` = 1000) 
    AND `active` = 1 

SQL 쿼리가 실행되는 :

SQL 쿼리가 실행되는

SELECT * 
     FROM cars 
WHERE EXISTS 
    (SELECT * 
     FROM `finance` 
    INNER JOIN `car_finance` ON `finance`.`id` = `car_finance`.`finance_id` 
    WHERE `car_finance`.`car_id` = `cars`.`id` 
    AND deposit = 1000 
    AND term = 48 
    AND payment >= 50 
    AND payment <= 200) 
    AND active = 1 
+0

나는이 문제에 잠시 들러서 찾고있는 것을이 패키지에 썼다 : https://github.com/Tucker-Eric/Eloquent 더 구체적으로 필터링 [관련 모델 필터링] (https://github.com/Tucker-Eric/EloquentFilter#ways-to-filter-related-models) –

답변

0

귀하의 질문이 명확하지하지만 난 당신이 원하는 생각 :

$cars->whereHas("finance", function ($query) { 
    $query->where('deposit', 1000)->where('term', 48) 
    ->whereBetween('payment', 50, 200); 
})->where('active', 1)->get(); 
+0

명확하지 않은 부분은 무엇입니까? 이것은 불행히도 "whereHas를 포함하는 곳에서 어디에서 전화를 이동할 필요없이"고려하지 않습니다. –

+0

어디서나 사용하고 싶은 곳이 있습니까? – MohamedSabil83