2011-11-02 104 views
5

Tengo una pregunta sobre la traducción de una consulta SQL en Doctrine Symfony. Me gustaría hacer una cosa así:Consulta SQL con UNION en Doctrine Symfony

SELECT m.* 
FROM member m 
INNER JOIN (
    SELECT id_member 
    FROM friend 
    WHERE id_friend=99 
    UNION 
    SELECT id_friend 
    FROM friend 
    WHERE id_member=99 
) a ON m.id=a.id_member 
WHERE m.visible=1 

En este ejemplo, busco todos los amigos del usuario 99.

Mis tablas:

de usuario: (id, nombre, visible)
Amigo: (id, id_member, id_friend, activo)

Precisión: Me gustaría utilizar el buscapersonas Symfony.

¿Una solución? Gracias !

Respuesta

4

Unión no está soportado dentro DQL, pero se puede emitir su consulta utilizando SQL RAW ->

$q = Doctrine_Manager::getInstance()->getCurrentConnection(); 
$result = $q->execute(" -- RAW SQL HERE -- "); 
+0

Gracias, funciona perfectamente :) – Hofstadter

2

Otra alternativa a @ManseUK es:

$em = $this->getEntityManager(); 
$connection = $em->getConnection(); 
$statement = $connection->prepare("-- RAW SQL HERE --"); 
$statement->execute(); 

return $statement->fetchAll(); 
Cuestiones relacionadas