在Doctrine Symfony中使用UNION进行SQL查询

时间:2011-11-02 13:57:06

标签: sql doctrine pagination symfony-1.4

我对在Doctrine Symfony中翻译SQL查询有疑问。我想做这样的事情:

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

在此示例中,我搜索用户99的所有朋友。

我的表:

  

会员:(身份证,姓名,可见)
  朋友:(id,id_member,   id_friend,活跃的)

精确度:我想使用Symfony寻呼机。

解决方案?谢谢!

2 个答案:

答案 0 :(得分:5)

DQL中不支持UNION,但您可以使用RAW SQL发出查询 - >

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

答案 1 :(得分:2)

@ManseUK的其他替代方案是:

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

return $statement->fetchAll();