Php 条令-我可以在->andWhere()中使用真正的SQL(而不是DQL)吗?

Php 条令-我可以在->andWhere()中使用真正的SQL(而不是DQL)吗?,php,orm,doctrine,doctrine-query,Php,Orm,Doctrine,Doctrine Query,我正在使用Doctrine,一种PHP ORM。我已经创建了一个条令查询,我需要更多的控制。所以我开始使用->和where。。。方法添加新的where子句。但是,我需要基于另一个表执行子查询,如下所示: $query->andWhere("id in (SELECT id from other_table where value = ?)", $myvar); 上述方法不起作用。但是,对于other_表没有Doctrine类,并且Doctrine一直试图加载other_file.php文

我正在使用Doctrine,一种PHP ORM。我已经创建了一个条令查询,我需要更多的控制。所以我开始使用->和where。。。方法添加新的where子句。但是,我需要基于另一个表执行子查询,如下所示:

$query->andWhere("id in (SELECT id from other_table where value = ?)", $myvar);
上述方法不起作用。但是,对于other_表没有Doctrine类,并且Doctrine一直试图加载other_file.php文件。我发现它是在把这个解释为DQL,对吗?。有没有什么方法可以告诉Doctrine不要将其解释为DQL,这样我就可以使用原始SQL了


我知道我可以使用Doctrine_RawSql,但这需要重写所有查询。如果有一个中途站那就太好了。

即使能够做到这一点,即使用未映射到条令类的DB表,并使用纯原始SQL,我认为条令1.x也不可能做到


也许是今年年底宣布的2.0条令。。。这不会很快^ ^

即使能够做到这一点,即使用未映射到条令类的DB表,并使用纯原始SQL,我认为条令1.x也不可能做到


也许是今年年底宣布的2.0条令。。。这不是很快的^^

不幸的是,对于Doctrine 1.x,即使使用RawSql,也不可能做到这一点

所有RawSql查询都要求将所选的每个表映射到一个“组件”,这实际上是一个Doctrine_记录类

您最好为另一个表添加一个类,即使它非常简单并且从未在其他任何地方使用过

否则,您将不得不使用以下方法转到原始PDO:

$dbh = Doctrine_Manager::connection()->getDbh();

请参见

不幸的是,对于Doctrine 1.x,即使使用RawSql,也无法做到这一点

所有RawSql查询都要求将所选的每个表映射到一个“组件”,这实际上是一个Doctrine_记录类

您最好为另一个表添加一个类,即使它非常简单并且从未在其他任何地方使用过

否则,您将不得不使用以下方法转到原始PDO:

$dbh = Doctrine_Manager::connection()->getDbh();

请参见

谢谢您提供的信息。我喜欢Doctrine和其他orm的总体概念,但它的性能影响总是让我担心。@jspcal:谢谢,我以为您已经为我准备好了:p谢谢您提供的信息。我喜欢Doctrine和其他orm的总体概念,但它的性能影响总是让我担心。@jspcal:谢谢,我以为您已经为我准备好了:p