2016-09-23 194 views
1

我在Symfony 3中編寫了一個控制檯應用程序,但由於某種原因,我的查詢結果只返回了1個結果,我在數組中確認了它的運行結果並返回了幾個結果。下面是相關代碼:爲什麼getResult()只返回一個只有最後一個記錄的數組?

$arr_id = array(); 
$em = $this->getContainer()->get('doctrine')->getManager(); 
$dql2 = 'SELECT r.productId as pid, COUNT(r.id) as cnt 
      FROM AppBundle:ReferralTrack r 
      WHERE r.productId in (:in) 
      GROUP BY r.productId 
      ORDER BY cnt DESC'; 
// $arr_id is populated prior to the next command and is, for example, [1,2,3,4,5] 
$rt = $em->createQuery($dql2) 
    ->setParameters(
     array(
      'in' => implode(',', $arr_id), 
     ) 
    ) 
; 
$traffic_count = $rt->getResult(); 

當我運行在MySQL中查詢,通過RT-$所示的完全相同的查詢> getSql()和更換?結合了來自破滅呼應了查詢(「」,$ arr_id),我得到了類似的結果是這樣的:

echo print_r($traffic_count, 1); 
--------------------------------- 
Array 
(
[0] => Array 
    (
     [pid] => 11234 
     [cnt] => 21 
    ) 

) 

這是我在MySQL運行查詢:

SELECT r0_.product_id AS pid, COUNT(r0_.id) AS cnt 
FROM referral_track r0_ 
WHERE r0_.product_id 
IN (11234, 57, 58, 60, 61, 9677, 11216, 11217, 11239, 11296) 
GROUP BY r0_.product_id 
ORDER BY cnt DESC 

並返回7個結果。我注意到的是getResult()似乎總是返回最後一個記錄,那就是在那裏顯示的數組。到底是怎麼回事?

回答

1

嘗試:

$rt = $em->createQuery($dql2) 
     ->setParameters(
      array(
       'in' => $arr_id, 
      ) 
     ) 
    ; 
+0

感謝@COil。我現在理解了很多教義,但不知道爲什麼它需要一個實際的數組,而不是你在MySQL中編寫它的方式。 – pogeybait

相關問題