symfony2/doctrine2 dql where field is not true
Solution 1
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/
Solution 2
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) ";
KoSMoS
Updated on June 16, 2022Comments
-
KoSMoS almost 2 years
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