具有推进查询的同一列上的多个条件
Multiple conditions on same column with propel queries
我在 propel 1.5 中使用 symfony2.5。
假设我的实体名为 Foo
并且 Foo
具有属性 numericalValue
。我想查询数据库以仅显示 Foo
的 numericalValue
在 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());
后,它确实对我有用。我有一段时间没有尝试了,因为列出的参数仍然不符合我的期望。但似乎关于参数数量与参数数量不匹配的异常在某个时候消失了。
简而言之:问题中的代码有效。
我在 propel 1.5 中使用 symfony2.5。
假设我的实体名为 Foo
并且 Foo
具有属性 numericalValue
。我想查询数据库以仅显示 Foo
的 numericalValue
在 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());
后,它确实对我有用。我有一段时间没有尝试了,因为列出的参数仍然不符合我的期望。但似乎关于参数数量与参数数量不匹配的异常在某个时候消失了。
简而言之:问题中的代码有效。