Doctrine orm 为什么getResult()只返回只有最后一条记录的数组?

Doctrine orm 为什么getResult()只返回只有最后一条记录的数组?,doctrine-orm,symfony,Doctrine Orm,Symfony,我正在用Symfony 3编写一个控制台应用程序,但由于某些原因,我的查询结果返回时在数组中只有一个结果,我确认在MySQL中运行了它,并返回了几个结果。以下是相关代码: $arr_id = array(); $em = $this->getContainer()->get('doctrine')->getManager(); $dql2 = 'SELECT r.productId as pid, COUNT(r.id) as cnt FROM AppBu

我正在用Symfony 3编写一个控制台应用程序,但由于某些原因,我的查询结果返回时在数组中只有一个结果,我确认在MySQL中运行了它,并返回了几个结果。以下是相关代码:

$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()似乎总是返回最后一条记录,这就是数组中显示的内容。发生了什么事?

试试:

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

谢谢@COil。我现在理解了一些原则,但不确定为什么它需要一个实际的数组,而不是你在MySQL中编写它的方式。