symfony - Doctrine 查询 : delete with limit

标签 symfony doctrine-orm doctrine dql doctrine-query

我正在尝试使用 Doctrine 中的删除查询仅删除 x 个对象。由于 Doctrine 中没有 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();

最佳答案

一种有效的解决方案是像这样使用带有 Doctrine 的原生 SQL(而不是 DQL)。

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

关于symfony - Doctrine 查询 : delete with limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25308171/

相关文章:

php - 为什么 composer update 将 symfony 更新为 2.5 但它是 "symfony/symfony": "~2.4"?

symfony - 学说2 - 如何使用 DATE_ADD 函数

doctrine-orm - 学说 2 返回错误 'proxy directory must be writable'

php - 在 Doctrine 中使用 DQL 访问多对多中间表中的字段

php - 优化 Doctrine 查询以防止额外查询

mysql - 如何对分组进行子计数

session - Symfony2 flashBag 空数组

symfony - 级联= {"remove"} VS orphanRemoval=true VS ondelete="CASCADE

mysql - 在 Doctrine2 中使用 SQL 中的 RAND() 函数

mysql - Doctrine 默认值与空插入