2011-11-02 16 views
5

Mam pytanie dotyczące tłumaczenia zapytania SQL w Doctrine Symfony. Chciałbym zrobić coś takiego:Zapytanie SQL z UNION w 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 

W tym przykładzie, mogę szukać wszystkich znajomych od użytkownika 99.

Moje tabele:

użytkownika: (id, name, visible)
Friend: (id, id_member, id_friend, active)

Precyzja: Chciałbym użyć pager'a Symfony.

Rozwiązanie? Dziękuję Ci !

Odpowiedz

4

Unia nie jest obsługiwana w ciągu DQL, ale można wydać zapytanie SQL za pomocą RAW ->

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

Dziękuję, że działa doskonale :) – Hofstadter

2

Inne alternatywy @ManseUK jest:

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

return $statement->fetchAll();