Intereting Posts
Динамические изображения для электронной почты, такие как обратные часы (в свете кеширования изображений в Gmail) PHP Неустранимая ошибка: время передачи по ссылке удалено PHP $ _POST не работает, но $ _GET отлично работает Как использовать услугу переводчика внутри Entity? PHP-переменные заканчиваются NULL (но работает код)! Вызов функции класса PHP на моей странице Получение части из строки jquery не будет работать в файле, полученном с помощью java select include Скопировать или не копировать дополнительные переменные в PHP? Исправление mod_rewrite для определенного файла PHP Fatal Error: превышено максимальное время выполнения Метод построения эхо-возврата; Не удалось выполнить доставку почты: отправка сообщения отправителю Обнаружение недостаточных переменных PHP: FALSE vs NULL vs unset () vs empty ()? Как я могу реализовать список контроля доступа в своем приложении Web MVC?

Использование собственного SQL-запроса без класса сущности

Мне нужно создать собственный SQL-запрос с несколькими объединениями и подзапросами. Это будет выглядеть примерно так:

SELECT res.id, COUNT(*) as count_ids FROM ( SELECT a.id FROM ... a WHERE ... LIKE ('%:param%') UNION ALL SELECT b.id FROM ... b WHERE ... LIKE ('%:param%') UNION ALL ... ) res GROUP BY res.id ORDER BY count_ids asc 

Результат не будет соответствовать ни одному объекту, который я использую в своем приложении. Можно ли создать ResultSetMapping с «анонимным» объектом? Или это, по крайней мере, возможно создать объект, который не будет создавать таблицу в следующий раз, когда я обновляю схему, чтобы я мог сопоставить результаты с ней?

Или есть ли какой-нибудь другой способ, способный вести дело с таким вопросом? Однако внесение изменений в базу данных невозможно, поскольку я имею дело с устаревшими материалами, которые нельзя коснуться. Я также сильно предпочел бы, если бы я делал все на стороне базы данных, не затрагивая большую часть PHP.

У вас есть особая потребность в сопоставлении результатов с объектом домена? Если нет, вы можете использовать DBAL для создания простого старого запроса, который вернет массив, как описано в поваренной книге Symfony2 и документации Doalrine DBAL :

 $conn = $this->container->get('database_connection'); $sql = 'SELECT res.id, COUNT(*)...'; $rows = $conn->query($sql); 

Использовать метод AddScalarResult для ResultSetMapping

 $rsm = new ResultSetMapping(); $rsm->addScalarResult('cnt', 'cnt'); $rsm->addScalarResult('id', 'id'); $query = $this->em->createNativeQuery('SELECT count(*) AS cnt, id_column as id FROM your_table group by id', $rsm); $result = $query->getResult(); var_dump($result); 

Массив результатов:

 array (size=1) 0 => array (size=2) 'cnt' => int 1 'id' => int 15