学说 - 我可以在 - > and Where()中使用Real SQL(不是DQL)吗?
-
21-09-2019 - |
题
我正在使用学说,一个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();
其他提示
即使能够做这种事情 (即未映射到学说类的DB表,并使用纯raw-sql), ,我认为学说1.x是不可能的
也许使用Doctrine 2.0 - 今年年底宣布了……这不是很快^^
不隶属于 StackOverflow