学说2简单"大于"标准

时间:2016-05-15 19:56:00

标签: php pdo orm doctrine-orm doctrine

在PDO / SQL中,我有一个简单的查询,其中"大于":

DELETE * FROM tablexyz WHERE access > :old

Doctrine 2 ORM中的等价物是什么?

我已经写了一些代码:

$criteria = ['access'=>$old];
$dataRepo = $entityManager->getRepository('tablexyz')->findBy($criteria)->delete();

我的问题是,我想在Doctrine 2 ORM中使用大于运算符,但我不想为此创建函数或类。有人知道更好或更短的解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以使用查询构建器,只需对其执行直接DQL(或SQL)查询。

$qb = $entityManager->createQueryBuilder();
$qb->select('e')
   ->from('Entityxyz', 'e')
   ->where('e.access > :old')
   ->setParameter('old', $old);

$entities = $qb->getQuery()->getResult();

$query = 'SELECT e FROM AppBundle\Entity\Entityxyz WHERE e.access > :old';

$entities = $entityManager->createQuery($query)
                          ->setParameter('old', $old)
                          ->getResult();`

我建议你为它创建一个存储库方法,但它是正确的地方。使用存储库中的查询构建器也更简单,因为它知道您正在引用哪个实体(并且可以跳过调用select和from)

class EntityxyzRepository extends EntityRepository
{
    public function getNewerThan($newerThan)
    {
        $qb = $this->createQueryBuilder('e');
        $qb->where('e.access > :newerThan')
           ->setParameter('newerThan', $newerThan);

        return $qb->getQuery()->getResult();
    }
}