2011-11-02 11 views
5

Tôi có câu hỏi về việc dịch một truy vấn SQL trong Doctrine Symfony. Tôi muốn làm một điều như thế:Truy vấn SQL với UNION trong 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 

Trong ví dụ này, tôi tìm kiếm tất cả bạn bè của người sử dụng 99.

bảng của tôi:

Thành viên: (id, tên, hiển thị)
Bạn bè: (id, id_member, id_friend, active)

Chính xác: Tôi muốn sử dụng máy nhắn tin Symfony.

Giải pháp? Cảm ơn bạn !

Trả lời

4

UNION không được hỗ trợ trong DQL, nhưng bạn có thể đưa ra truy vấn của bạn sử dụng SQL RAW ->

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

Cảm ơn bạn, nó hoạt động hoàn hảo :) – Hofstadter

2

thay thế khác để @ManseUK là:

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

return $statement->fetchAll();