Reputation: 533
im having troubles with checking boolean field with "is not true" clause im getting this error:
("[Syntax Error] line 0, col 510: Error: Expected =, <, <=, <>, >, >=, !=, got 'IS'")
query is build with dql. so in code i have it added like this
$dql .= " AND p.archived IS NOT TRUE ";
executed query:
SELECT COUNT(p.id)
FROM Sandbox\WebsiteBundle\Entity\Pages\OfferPage p
INNER JOIN Kunstmaan\NodeBundle\Entity\NodeVersion nv WITH nv.refId = p.id
INNER JOIN Kunstmaan\NodeBundle\Entity\NodeTranslation nt WITH nt.publicNodeVersion = nv.id and nt.id = nv.nodeTranslation
INNER JOIN Kunstmaan\NodeBundle\Entity\Node n WITH n.id = nt.node WHERE n.deleted = 0
AND n.hiddenFromNav = 0
AND n.refEntityName = 'Sandbox\WebsiteBundle\Entity\Pages\OfferPage'
AND nt.online = 1 AND nt.lang = :lang AND p.archived IS NOT TRUE AND p.expirationDate >= :date ORDER BY p.price ASC
Upvotes: 6
Views: 13132
Reputation: 27295
Normally when you have a boolean configured in Doctrine you have an integer field with 0 or 1. Its much easier to check if the value is 0
or 1
.
$dql .= " AND p.archived = 0";
or another solution:
$dql .= " AND p.archived = false";
or if you check to null
$dql .= " AND p.archived is null";
When you look at the page you can see some expression. IS
can't be used in that context.
And here is another link to show you how to use where in
and where not in
http://www.ozonesolutions.com/programming/2011/09/symfony-doctrine-where-in-and-where-not-in-syntax/
Upvotes: 10
Reputation: 533
thanks guys. i have a nullable field. so i have done it with this because i need all that is not true.
$dql .= " AND (p.archived = 0 OR p.archived is null) ";
Upvotes: 1