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

Tom*_*Tom 1 doctrine symfony doctrine-orm

我想检查数据库中是否存在记录。它唯一需要返回的是对还是错。我现在正在使用以下查询来获取记录。是另一个作为getResult()的命令来检查记录是否存在吗?

return $this->createQueryBuilder('u')
            ->andWhere('u.email = :email AND u.id != :id')
            ->setParameter('email', $email)
            ->setParameter('id', $userId)
            ->getQuery()
            ->getResult();
Run Code Online (Sandbox Code Playgroud)

Mir*_*iro 5

return (boolean)$this->createQueryBuilder('u')
            ->andWhere('u.email = :email AND u.id != :id')
            ->setParameter('email', $email)
            ->setParameter('id', $userId)
            ->getQuery()
            ->getOneOrNullResult();
Run Code Online (Sandbox Code Playgroud)

请注意,如果查询有可能(例如,电子邮件列上没有唯一索引)返回多个结果,则还需要用try / catch块包装该调用,因为如果一个以上的结果可能会引发异常被发现。

  • 我建议使用$ this-> createQueryBuilder('u')-> select('COUNT(u.id)')-> getQuery()-> getOneOrNullResult(\ Doctrine \ ORM \ Query :: HYDRATE_SINGLE_SCALAR)> 0;`相反,为了防止水化实体,关联并初始化生命周期回调和事件侦听器。 (5认同)