Я новичок в 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. Что ж, теперь есть несколько примеров, но эти 2 лайнера тривиальны, и я не смог найти ни одного примера, связанного с таким подзапросом.
Итак, я надеюсь, что кто-то здесь может мне помочь.
Изменить:
Я хотел бы решить эту проблему с помощью dql.
Я пытался решить эту проблему с помощью построителя запросов, но мне сказали, что построитель запросов != dql
Редактировать 2:
Теперь мне сказали, что доктрина 2 не поддерживает подвыборки в "FROM (SUBSELECT)", но поддерживает "... WHERE IN (SUBSELECT)" и что можно переписать мой запрос к форме IN(). Что ж, попробуем разобраться сейчас.
Редактировать 3: мне не удается переписать исходный подзапрос во внутренний подзапрос. Итак... dql не выполняет подзапросы, и нет другого способа сделать с dql то, что я хочу?! Я бы сказал, что тогда в dql не будет очень важной функции. Или я просто не вижу что-л. здесь ?
Редактировать 4: я наконец-то получил внутренний подзапрос, но он был примерно в 10 раз медленнее (4 секунды вместо 0,4), и теперь некоторые ребята из доктрины из #doctrine сказали мне, что я должен использовать nativeQuery функция вместо этого.
Редактировать 5: Теперь он работает с использованием nativeQuery, см. мой ответ для этого...