【问题标题】:Subqueries with Doctrine_RawSql带有 Doctrine_RawSql 的子查询
【发布时间】:2010-10-12 18:51:05
【问题描述】:

Doctrine_RawSql的select字段中是否可以有子查询?

$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");

上面的例子我已经厌倦了,但它几乎破坏了查询(它不会选择每行上的主键以外的任何东西)。

有什么特殊的方法可以做到这一点还是我运气不好?

【问题讨论】:

  • 这是您选择查询的完整语法吗?如果没有,请在代码中添加FROM等子句。

标签: php mysql doctrine subquery


【解决方案1】:

当我有一个对 DQL 来说有点太难的复杂查询时,我通常只是抓取 PDO 对象并手动输入一个查询。方法如下:

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

节省了大量时间,最终结果可能也更容易理解。

【讨论】:

    【解决方案2】:

    实际上,我通过将 Doctrine_RawSql 的 parseDqlQueryPart 函数修改为接受参数“select_sql”(而不仅仅是“select”)并将其呈现为 DQL 来解决此问题。这让我可以使用 Doctrine 而不是 PDO。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 2018-05-31
      • 2018-11-22
      • 1970-01-01
      相关资源
      最近更新 更多