Doctrine 查询:删除限制

msu*_*gas 5 doctrine dql doctrine-query symfony doctrine-orm

我正在尝试使用 Doctrine 中的删除查询仅删除 x 个对象。并且由于学说中没有 LIMIT,我们应该使用 $query->setMaxResults($limit) 来代替。我正在使用 Symfony2。

但是,它不适用于以下查询(无论是否使用 $query->setMaxResults($limit),它都会删除所有内容而不是删除 $limit 第一个实体)。

$limit = 10;
$query = $entityManager->createQuery(
        'DELETE FROM MyProject\Bundle\MyBundle\Entity\MyEntity myEntity
         WHERE myEntity.cost = 50'
    )
$query->setMaxResults($limit);
$query->execute();
Run Code Online (Sandbox Code Playgroud)

msu*_*gas 3

一种有效的解决方案是将本机 SQL 与 Doctrine 一起使用(而不是 DQL)。

$limit = 10;
$sql    = 'DELETE FROM my_entity
           WHERE cost = 50
           LIMIT ' . $limit;
$stmt = $entityManager->getConnection()->prepare($sql);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)