具有推进查询的同一列上的多个条件

Multiple conditions on same column with propel queries

我在 propel 1.5 中使用 symfony2.5。

假设我的实体名为 Foo 并且 Foo 具有属性 numericalValue。我想查询数据库以仅显示 FoonumericalValue 在 5 和 10 或 15 和 20 之间。

SQL 语句如下所示:

SELECT *
FROM foo
WHERE
    (numericalValue >= 5 AND numericalValue <= 10)
    OR
    (numericalValue >= 15 AND numericalValue <=  20)

我想用推进查询来表示。

我试过这个:

$query = FooQuery::create('Foo');
$query->condition("min", "Foo.numericalValue >= :bar1", 5);
$query->condition("max", "Foo.numericalValue <= :bar2", 10);
$query->combine(array("min","max"), "and", "first");

$query->condition("min", "Foo.numericalValue >= :bar3", 15);
$query->condition("max", "Foo.numericalValue <= :bar4", 20);
$query->combine(array("min","max"), "and", "second");


$query->combine(array("first","second"), "OR");

其中returns异常,因为参数个数与参数个数不匹配

$query->toString():

Criteria: SQL (may not be complete):
SELECT FROM `Foo` WHERE 
(    
  (Foo.numericalValue >= :bar1 AND Foo.numericalValue <= :bar2) OR
  (Foo.numericalValue >= :bar3 AND Foo.numericalValue <= :bar4)
)
Params: 
  Foo.numericalValue => 5,
  Foo.numericalValue => 10,
  Foo.numericalValue => 15,
  Foo.numericalValue => 20

我希望 Params: bar1 => 5, bar2 => 10, bar3 => 15, bar4 => 20

我该如何解决这个问题?

Params: 下列出的参数未反映将绑定的值。

删除 die($query->toString()); 后,它确实对我有用。我有一段时间没有尝试了,因为列出的参数仍然不符合我的期望。但似乎关于参数数量与参数数量不匹配的异常在某个时候消失了。

简而言之:问题中的代码有效。