是否可以在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 :(得分:0)
当我有一个对DQL来说有点困难的复杂查询时,我通常只需抓取PDO对象并手动输入查询。方法如下:
$PDO = Doctrine_Manager::getInstance()->connection()->getDbh();
$PDO->prepare("
//SQL Query Here
")->execute();
节省了大量时间,最终结果可能也更容易理解。
答案 1 :(得分:0)
我实际上通过将Doctrine_RawSql的parseDqlQueryPart函数修改为接受参数“select_sql”(而不仅仅是“select”)并将其渲染为DQL来解决此问题。这允许我使用Doctrine而不是PDO。