2017-02-21 79 views
1

我有一个DQL字符串:主义查询:结果创建数组索引偏移

SELECT DISTINCT a, 
     b, 
     (
      SELECT COUNT(c) 
      FROM ..\Entity\EntityC c 
      WHERE c.b = b 
     ), 
     (
      SELECT MAX(c2.date) 
      FROM ..\Entity\EntityC c2 
      WHERE c2.b = b 
     ) 
FROM ..\Entity\EntityA a 
JOIN a.b b 
... 

我想找回一些A的,C的,涉及到A·B的数量,以及最新的C的日期。 我的代码不产生我想要的结果,但由此产生的阵列已经在其索引的偏移:

array(size = [rows]) 
    0 => array (size = 3) 
     0 => Entity(a) 
     1 => int(COUNT(c)) 
     3 => date(MAX(c2.date)) 
    1 => array (size = 3) 
     0 => Entity(a) 
     1 => int(COUNT(c)) 
     3 => date(MAX(c2.date)) 
    ... 

为什么会发生这种偏移发生,是有办法避免这种情况?

回答

2

也许与此有关 “如果您获取FROM子句中列出的多个实体,则水合将返回迭代不同顶级实体的行。 (从http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#fetching-multiple-from-entities

$dql = "SELECT u, g FROM User u, Group g"; 

array 
    [0] => Object (User) 
    [1] => Object (Group) 
    [2] => Object (User) 
    [3] => Object (Group) 

你可以验证在下一行做转储吗? 致以问候

+0

感谢您的审查,我编辑 – ste

+0

我已经认为问题在于保湿,但你的建议是另一种方式比我的问题。我会编辑我的问题的细节。 –