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)
一种有效的解决方案是将本机 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)
| 归档时间: |
|
| 查看次数: |
1836 次 |
| 最近记录: |