我使用symfony2.5和propel 1.5。
我们假设我的实体被称为Foo
而Foo
有一个属性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
我该如何解决这个问题?
答案 0 :(得分:0)
Params:
下列出的参数不会反映要绑定的值。
删除die($query->toString());
后,它确实对我有用。我没有尝试过一段时间,因为列出的参数仍然不符合我的预期。但似乎有一些与参数数量不匹配的参数在某些时候消失了。
简而言之:问题中的代码有效。