Symfony Doctorine检查数据库中是否存在记录

Symfony Doctorine检查数据库中是否存在记录,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,我想检查数据库中是否存在记录。它只需要返回真或假。我现在使用以下查询来获取记录。该命令是否作为getResult用于检查记录是否存在 return $this->createQueryBuilder('u') ->andWhere('u.email = :email AND u.id != :id') ->setParameter('email', $email) ->setParameter('id

我想检查数据库中是否存在记录。它只需要返回真或假。我现在使用以下查询来获取记录。该命令是否作为getResult用于检查记录是否存在

return $this->createQueryBuilder('u')
            ->andWhere('u.email = :email AND u.id != :id')
            ->setParameter('email', $email)
            ->setParameter('id', $userId)
            ->getQuery()
            ->getResult();
请注意,如果可能的话,例如,在电子邮件列上没有唯一的索引,查询将返回多个结果,那么您还需要使用try/catch块包装调用,因为如果找到多个结果,它可能会引发异常


请注意,如果可能,例如,电子邮件列上没有唯一的索引,查询将返回多个结果,那么您还需要使用try/catch块包装调用,因为如果找到多个结果,它可能会引发异常。

您也可以只添加setMaxResults1,而不是包装一个try/catch。我建议使用$this->createQueryBuilder'u'->select'COUNTu.id'->getQuery->getOneOrnulResult\Doctrine\ORM\Query::HYDRATE\u SINGLE\u SCALAR>0;相反,为了防止水合实体、关联和初始化生命周期回调和事件侦听器,您也可以只添加setMaxResults1,而不是包装try/catch。我建议使用$this->createQueryBuilder'u'->select'COUNTu.id'->getQuery->getOneOrnulResult\Doctrine\ORM\Query::HYDRATE\u SINGLE\u SCALAR>0;相反,为了防止实体水合,关联和初始化生命周期回调和事件侦听器。链接的答案是关于如何基于电子邮件地址加载模型,以及提供的解决方案如何从数据库加载实例。它与返回简单的真/假结果无关,链接答案的标题具有误导性。链接答案是关于如何基于电子邮件地址加载模型,提供的解决方案从数据库加载实例。它与返回简单的真/假结果无关,链接答案的标题具有误导性。
return (boolean)$this->createQueryBuilder('u')
            ->andWhere('u.email = :email AND u.id != :id')
            ->setParameter('email', $email)
            ->setParameter('id', $userId)
            ->getQuery()
            ->getOneOrNullResult();