使用Propel ORM进行UNION查询

时间:2009-12-31 14:34:34

标签: orm propel

我正在尝试使用Propel ORM创建一个UNION查询,例如

$criterion1 UNION $criterion2

有谁知道怎么做?

2 个答案:

答案 0 :(得分:4)

您无法使用Criteria创建联合查询。相反,你可以create the SQL string yourself,并用它来保湿物体。如果您仍想使用Criteria构建联合查询的两个部分,则可以调用BasePeer::createSelectSql(Criteria $criteria, array &$params)。这将在需要由PDO层设置的值的位置返回带有?的SQL字符串。第二个参数是一个将填充这些参数的数组(这就是您通过引用传递它的原因)。您可以将其传递给PDOStatement::execute(array $params)函数。

答案 1 :(得分:2)

我想到了两个解决方案。首先,简单的方法是运行两个单独的调用,然后使用array_merge将它们粘合在一起。根据您的使用情况,这可能不像您想象的那样耗费时间。

此外,如果您不熟悉编写查询,请编写包含所需查询的视图,然后将其放入Propel模型中。我在Propel / symfony 1.x中有一堆非常复杂的主细节屏幕,这种方法很有效。它确实略微违背了使用ORM的理念,但是嘿,偶尔打破规则很有趣! :)