我对 FLOW3 很陌生,对 Doctrine 也很陌生。
我只是在运行一些测试,我想学习或理解一些我稍后将使用的技术。现在我被这个教义部分困住了,我想在其中生成一些统计数据。
$results = $this->entityManager
->createQuery('SELECT version,count(version)
FROM (SELECT device, version
FROM \MyStuff\Stats\Domain\Model\Stat
WHERE
date > \'2011-10-01 00:00:00\' and
date < \'2011-10-02 00:00:00\'
GROUP BY device) GROUP BY version')
->getResult();
我也在其他地方问过,他们把我带到了Doctrine Docs的地方。好吧,现在有几个例子,但是这两个衬里是微不足道的,我找不到任何与这种子选择相关的例子。
所以我希望这里有人可以帮助我。
编辑:
我想用 dql 解决这个问题。
我尝试使用 querybuilder 解决这个问题,但有人告诉我 querybuilder != dql
编辑2:
现在有人告诉我,doctrine2 不支持“FROM (SUBSELECT)”中的子选择,但它支持“... WHERE IN (SUBSELECT)”,并且可以将我的查询重写为 IN () 表单。好吧,现在想弄清楚。
编辑 3: 我无法将子查询重写为子查询。所以...... dql 不做子查询,没有其他方法可以用 dql 做我想做的事?!然后 dql 将缺少我要说的一个非常重要的功能。或者我只是没有看到某事。这里 ?
编辑 4: 我终于得到了子查询,但它慢了大约 10 倍(4 秒而不是 0.4 秒),现在#doctrine 的一些教义人员告诉我,我应该使用 nativeQuery 函数。
编辑 5: 它现在使用 nativeQuery 工作,请参阅我的答案......