update symfony2 query force create consultas sql symfony doctrine doctrine2 dql

sql - force - Symfony2 Using Query in Custom Repository Class



symfony repository (1)

Parece que mezcla DQL y SQL. Puede ver lo que es posible con DQL aquí .

En cuanto a su consulta, le sugiero que utilice SQL en lugar de DQL.

Un ejemplo de cómo hacer una consulta sql dentro de un repositorio:

$sql = ''SELECT * FROM table WHERE id = :id''; $params = array( ''id'' => 4, ); return $this->getEntityManager()->getConnection()->executeQuery($sql, $params)->fetchAll();

Tengo una clase de repositorio con un método para llamar a una consulta personalizada. Cuando trato de llamar a findAllWithRating() desde dentro de un controlador obtuve la siguiente excepción:

[2/2] QueryException: [Syntax Error] line 0, col 156: Error: Unexpected ''NULL''

Si intento llamar a la consulta dentro de phpmyadmin, ¡la consulta funciona muy bien!

¿Alguna idea?

<?php namespace Anchorbrands/Bundle/MessageBundle/Entity; use Doctrine/ORM/EntityRepository; class MessageRepository extends EntityRepository { public function findAllWithRating() { return $this->getEntityManager() ->createQuery("SELECT id, user_id, title, slug, content, question, image_name, created_at, updated_at, MAX(CASE WHEN rating = ''1'' THEN totalCount ELSE NULL END) ''Rating 1'', MAX(CASE WHEN rating = ''2'' THEN totalCount ELSE NULL END) ''Rating 2'', MAX(CASE WHEN rating = ''3'' THEN totalCount ELSE NULL END) ''Rating 3'' FROM ( SELECT a.id, a.user_id, a.title, a.slug , a.content, a.question, a.image_name, a.created_at, a.updated_at, rating, COUNT(*) totalCount FROM AnchorbrandsMessageBundle:Message a LEFT JOIN AnchorbrandsMessageBundle:Rating b ON a.id = message_id GROUP BY a.id, a.user_id, a.title, a.slug, a.content, a.question, a.image_name, a.created_at, a.updated_at, rating ) r GROUP BY id, user_id, title, slug, content, question, image_name, created_at, updated_at")->getResult(); } }