我试图从Doctrine中删除带有删除查询的x对象。由于学说中没有LIMIT,我们应该使用$ query-> setMaxResults($ limit)代替。我正在使用Symfony2。
但是它不适用于以下查询(使用或不使用$ query-> setMaxResults($ limit),它会删除所有内容,而不是删除$ limit first entities)。
$limit = 10;
$query = $entityManager->createQuery(
'DELETE FROM MyProject\Bundle\MyBundle\Entity\MyEntity myEntity
WHERE myEntity.cost = 50'
)
$query->setMaxResults($limit);
$query->execute();
答案 0 :(得分:1)
一个有效的解决方案是使用带有Doctrine的本机SQL(而不是DQL)。
$limit = 10;
$sql = 'DELETE FROM my_entity
WHERE cost = 50
LIMIT ' . $numberOfDeletion;
$stmt = $entityManager->getConnection()->prepare($sql);
$stmt->execute();
答案 1 :(得分:0)
setMaxResults
仅在某些情况下有效。如果不加以管理,学说似乎会忽略它。
如果它不起作用,请尝试使用本机 SQL,就像发布的其他解决方案一样。