2010-10-12 98 views
0

是否可以在Doctrine_RawSql的选择字段中有子查询?与Doctrine_RawSql子查询

$q->select('{t.*}, {i.*}, {e.*}, {f.*}, {f2.*}'); 
$q->addSelect("(SELECT f.id FROM Following f WHERE f.follower_id = ? AND f.following_id = t.owner_id) AS following"); 
$q->addSelect("(SELECT COUNT(c.id) FROM PostComments c WHERE c.post_id = t.id) AS num_comments"); 

上面的例子是我累了,但它几乎打破了查询(它不会选择除每行的主键以外的任何东西)。

有没有特殊的方法来做到这一点,或者我只是运气不好?

+0

这是您选择查询的完整语法吗?如果不是,请将'FROM'和其他子句添加到代码中。 – DrColossos 2010-10-18 09:01:39

回答

0

我实际上通过修改Doctrine_RawSql的parseDqlQueryPart函数来接受参数“select_sql”(而不仅仅是“select”)并将其渲染为如同DQL一样来解决此问题。这允许我使用Doctrine而不是PDO。

0

当我有一个复杂的查询,这对DQL有点太难了,我通常只需抓住PDO对象并手动输入查询。方法如下:

$PDO = Doctrine_Manager::getInstance()->connection()->getDbh(); 
$PDO->prepare(" 
    //SQL Query Here 
")->execute(); 

节省很多时间和最终结果可能也更容易理解。