Doctrine ORM zend框架entitymanager findby multiple conditions
Doctrine ORM zend framework entitymanager findby multiple conditions
我正在使用 2 个 findby 查询数据库,有没有一种方法可以在一个 findby 中使用 2 个条件进行查询?
$this->entityManager->getRepository(User::class)->findOneByConfirmtoken($token)
&& $this->entityManager->getRepository(User::class)->findOneById($id)
->findBy([
'property1' => 'value1',
'property2' => 'value2',
])
参见the docs关于使用条件
您可以将值数组传递给 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();
}
我正在使用 2 个 findby 查询数据库,有没有一种方法可以在一个 findby 中使用 2 个条件进行查询?
$this->entityManager->getRepository(User::class)->findOneByConfirmtoken($token)
&& $this->entityManager->getRepository(User::class)->findOneById($id)
->findBy([
'property1' => 'value1',
'property2' => 'value2',
])
参见the docs关于使用条件
您可以将值数组传递给 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();
}