我正在尝试使用Propel ORM创建一个UNION查询,例如
$criterion1 UNION $criterion2
有谁知道怎么做?
答案 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的理念,但是嘿,偶尔打破规则很有趣! :)