How to use the in statement in DQL in Doctrine 2.0

后端 未结 4 1978
暖寄归人
暖寄归人 2020-12-17 08:37

I have the following query that uses an IN statement.

$ids = array(1,2,3);
$query = \'select o from Organisation o where o.id in (:ids)\';
$this->_entityM         


        
相关标签:
4条回答
  • 2020-12-17 08:52

    I used this (setParameter didn't seem to work for me):

    $em->createQuery('SELECT users FROM Entities\User users WHERE users.id IN (:ids)')
    ->setParameters(array('ids' => $ids));
    

    http://redbeardtechnologies.wordpress.com/2011/07/01/doctrine-2-dql-in-statement/

    0 讨论(0)
  • 2020-12-17 08:56

    Try passing the array itself to ->setParameter(...) instead of imploding it into a string.

    0 讨论(0)
  • 2020-12-17 09:06

    I'm struggling with the IN statement too, using the $query->expr()->in() construct...

    Try:

    $em->createQuery(“SELECT users FROM Entities\User users WHERE users.id IN (':ids')”)
    ->setParameters(array(‘ids’ => $ids));
    

    I think the simple quotes around your parameters in the IN() part are necessary...

    0 讨论(0)
  • 2020-12-17 09:11

    I solved this:

    $con = $this->getEntityManager();
    $query = $con->createQuery("SELECT cl
                                FROM BackendBundle:classifieds cl 
                                INNER JOIN BackendBundle:locations lo WITH cl.locationId = lo.id
                                INNER JOIN BackendBundle:municipality mu WITH lo.municipalId = mu.id
                                WHERE cl.verified = false AND mu.id = ".$munId." AND cl.locationId NOT IN (:ids) ");
    $query->setParameters(array('ids' => $locsIds));
    return $query->getResult();
    
    0 讨论(0)
提交回复
热议问题