Я бы настоятельно рекомендовал попытаться обработать ваш запрос в Doctrine, но если нативный является единственным способом, то он единственный.
Собственный SQL в Symfony: обратите внимание, я использую их в Symfony 3, но должен работатьв Symfony 4. Как только вы больше будете использовать Doctrine, вы обнаружите, что он действительно делает все, что может делать нативный, и некоторые вещи, которые он не делает, есть плагины для расширения возможностей Doctrine.Кроме того, один из способов обойти Unions - запустить два запроса, а затем объединить массивы.
$em = $this->getDoctrine()->getManager();
$sql = "SELECT .. FROM .. WHERE .. ";
$result = $em->getConnection()->prepare($sql);
$result->execute();
Другой вариант - использовать репозиторий: обратите внимание, что здесь используется Doctrine, поэтому применяются все правила Doctrine.
$sql =
"
SELECT
...
FROM
App:EntityName alias
WHERE
...
"
;
$query = $this->getEntityManager()->createQuery($sql);
$results = $query->getResult();