특정 상점에 속한 모든 고객을 돌려주는 교리 쿼리가 있습니다. 전체적으로 29 개의 레코드가 반환됩니다. 의 수를 계산Doctrine : 계산 결과가 결과를 얻는 것 이상을 반환합니다.
SELECT c FROM Customer c INNER JOIN c.shops cs WHERE cs.shop IN(2, 3)
반환 (COUNT()를 사용하여 : 가져 오기 결과 - 나는 카운트 쿼리를 실행할 경우, 거의 동일한 DQL으로, 나는 결과
Query1을의 다른 번호를
: 결과를 수 - 기록은int(29)
QUERY2) 반환 0
SELECT count(c) FROM Customer c INNER JOIN c.shops cs WHERE cs.shop IN(2, 3)
Retruns :
array(1) { [0]=> array(1) { [1]=> string(2) "36" } }
나는 그 일이 될 수있는 방법을 제대로 작동하지 못할? 바라건대 누군가가 당신이 생각 ...
에서 반환 된 것을 비교 -
은 당신은 최고의 교리가 쿼리
$qb->getSQL()
에서 생성하는 SQL에서 반향과를 통해 그것을 실행하면 phpMyAdmin, MySQL의 워크 벤치 또는 프로 속편 같은 것을하여이 차이를 시각화 할 수 있습니다 가져 오기가 정확합니다. 29 개의 순 고객이이 두 상점에 할당되어 있습니다. 나는 36이 중복을 포함하고 있다고 생각하지만 같은 쿼리가 다른리스트를 반환하는 이유는 무엇입니까? – YorkshireDeveloper'count (*)'또는'count (id)'는 어떨까요? – Maerlyn
count (id)가 동일한 결과를 반환하고 doctrine에서 count (*)를 수행 할 수 없습니다. 어딘가에 묻지 않은 암시적인 DISTINCT가있는 것 같습니다 ... – YorkshireDeveloper