symfony2 / doctrine2 dql其中field不为true

时间:2015-06-11 08:22:42

标签: mysql sql symfony doctrine-orm dql

我在使用“is not true”子句检查布尔字段时遇到了麻烦 我得到这个错误:

  

(“[语法错误]第0行,第510栏:错误:预期=,<,< =,<>,>,> =,!=,得到'IS'”)

查询是使用dql构建的。所以在代码中我添加了这样的

 {"foo": {"first_name":"Vincent",[...]}}

执行查询:

$dql .= " AND p.archived IS NOT TRUE ";

2 个答案:

答案 0 :(得分:4)

通常,当你在Doctrine中配置一个布尔值时,你有一个0或1的整数字段。更容易检查值是0还是1

$dql .= " AND p.archived = 0";

或其他解决方案:

$dql .= " AND p.archived = false";

或者如果您选中null

$dql .= " AND p.archived is null";

当您查看页面时,您可以看到一些表达式。 {1}}不能在该上下文中使用。

http://doctrine1-formerly-known-as-doctrine.readthedocs.org/en/latest/en/manual/dql-doctrine-query-language.html

这是另一个链接,向您展示如何使用ISwhere in

http://www.ozonesolutions.com/programming/2011/09/symfony-doctrine-where-in-and-where-not-in-syntax/

答案 1 :(得分:1)

谢谢你们。我有一个可以为空的领域。所以我这样做是因为我需要一切不正确的事。

$dql .= " AND (p.archived = 0 OR p.archived is null) ";