教义ORM zend框架实体管理器通过多个条件查找

时间:2019-01-24 20:04:59

标签: zend-framework doctrine-orm

我正在用2个findby查询数据库,有没有一种方法可以在2个条件下一次进行findby操作呢?

$this->entityManager->getRepository(User::class)->findOneByConfirmtoken($token)
        && $this->entityManager->getRepository(User::class)->findOneById($id)

2 个答案:

答案 0 :(得分:1)

->findBy([
    'property1' => 'value1',
    'property2' => 'value2',
])

有关使用条件,请参见the docs

答案 1 :(得分:0)

您可以将值数组传递给findBy方法。我还建议您在特定情况下编写自己的存储库。它对于更复杂的查询很有用。在这种情况下,它将看起来像:

public function findOneByIdAndConfirmationToken(int $userId, string $confirmationToken): ?User
{
    return $this->getEntityManager()
        ->createQueryBuilder()
        ->select('u')
        ->from(User::class, 'u')
        ->where('u.id = :userId')
        ->andWhere('u.confirmationToken = :confirmationToken')
        ->setParameter('userId', $userId, PDO::PARAM_INT)
        ->setParameter('confirmationToken', $confirmationToken, PDO::PARAM_STR)
        ->getQuery()
        ->getOneOrNullResult();
}