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

时间:2015-03-19 11:33:57

标签: symfony propel

我使用symfony2.5和propel 1.5。

我们假设我的实体被称为FooFoo有一个属性numericalValue。我想查询数据库,只显示Foo的{​​{1}}介于5和10或15和20之间。

SQL语句如下所示:

numericalValue

我想用推进式查询表示。

我试过了:

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");

$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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Params:下列出的参数不会反映要绑定的值。

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

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