我正在尝试使用 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/