Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用SQL的子查询_Php_Mysql_Doctrine_Subquery - Fatal编程技术网

Php 使用SQL的子查询

Php 使用SQL的子查询,php,mysql,doctrine,subquery,Php,Mysql,Doctrine,Subquery,是否可以在SQL的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 PostCommen

是否可以在SQL的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");
上面的例子是我已经厌倦的,但是它几乎破坏了查询(除了每行上的主键之外,它不会选择任何东西)


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

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

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

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

我实际上通过修改Doctrine\u RawSql的parseDqlQueryPart函数,接受一个参数“select\u sql”(而不仅仅是“select”),并将其呈现为DQL,解决了这个问题。这允许我使用条令而不是PDO。

这是您选择查询的完整语法吗?如果没有,请将
FROM
和其他条款添加到代码中。