首页 > 解决方案 > DQL 查询原则不等于返回无结果

问题描述

$query = $em->createQuery('SELECT m FROM App\Entity\Message m JOIN m.rejectedby u WHERE u.id != :user AND m.conversation IS NULL');
    $query->setParameter('user',$userid);

这个查询有什么问题?我应该得到结果,但我什么也没得到。

只是将类似的查询与“WHERE u.id = :user”进行比较给出了我期望的结果。User.id 到 m.rejectedby 是多对多的关系。

标签: symfonydoctrinedql

解决方案


我让它与 QueryBuilder 一起工作。我希望它对有类似问题的人有所帮助。

$qb1 = $this->createQueryBuilder('m');
    $qb1
        ->select('m')
        ->join('m.rejectedby','u')
        ->andwhere('u.id = :userid')
        ->setParameter('userid',$userid)    
        ;

    
    $qb = $this->createQueryBuilder('ms');
    $qb
        
        ->where($qb->expr()->notIn('ms',$qb1->getDQL()))
        ->setParameter('userid',$userid)
        ->andWhere('ms.conversation IS NULL');

推荐阅读