我正在使用学说,一个PHP ORM。我创建了一个学说查询,我需要更多的控制权。所以我开始使用 ->andWhere(...) 添加新条款的方法。但是,我需要根据另一个表进行子查询,例如:

$query->andWhere("id in (SELECT id from other_table where value = ?)", $myvar);

以上不起作用。但是,没有针对其他_table的学说课,并且学说一直在尝试加载文件 other_file.php. 。我发现它将其解释为DQL(对吗?)。我可以告诉学说不要将其解释为DQL,以便我可以使用RAW SQL?

我知道我可以使用 Doctrine_RawSql, ,但这将涉及重写所有查询。如果有一所中途房子,那会很好。

有帮助吗?

解决方案

不幸的是,对于学说1.x,即使使用RAWSQL也无法执行此操作。

所有RAWSQL查询都要求将每个选定的表映射到“组件”,这实际上是Doctrine_record类。

即使它很简单,也从未在其他任何地方使用,也可以最好为您添加一堂课。

否则,您必须使用:

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

Doctrine_rawsql

其他提示

即使能够做这种事情 (即未映射到学说类的DB表,并使用纯raw-sql), ,我认为学说1.x是不可能的

也许使用Doctrine 2.0 - 今年年底宣布了……这不是很快^^

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top