Doctrine查询:删除限制

时间:2014-08-14 12:32:53

标签: symfony doctrine-orm doctrine dql doctrine-query

我试图从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();

2 个答案:

答案 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 仅在某些情况下有效。如果不加以管理,学说似乎会忽略它。

检查教义文档:https://www.doctrine-project.org/projects/doctrine1/en/latest/manual/dql-doctrine-query-language.html#driver-portability

如果它不起作用,请尝试使用本机 SQL,就像发布的其他解决方案一样。