Subquery in doctrine2 notIN Function

后端 未结 3 801
甜味超标
甜味超标 2020-11-30 06:09

I\'d like to select members who are not in specific service. I have 3 tables :

  • membre
  • service
  • membre_service<
3条回答
  •  既然无缘
    2020-11-30 06:14

    The same alias cannot be defined 2 times in the same query

    $qb  = $this->_em->createQueryBuilder();
    $qb2 = $qb;
    $qb2->select('m.id')
        ->from('Custom\Entity\MembreService', 'ms')
        ->leftJoin('ms.membre', 'm')
        ->where('ms.id != ?1');
    
    $qb  = $this->_em->createQueryBuilder();
    $qb->select('mm')
        ->from('Custom\Entity\Membre', 'mm')
        ->where($qb->expr()->notIn('mm.id', $qb2->getDQL())
    );
    $qb->setParameter(1, $service);
    $query  = $qb->getQuery();
    
    return $query->getResult();
    

    Ideally you should use many-to-many relation for your entity, in this case your query is going to be much simpler.

提交回复
热议问题