原则-删除所有实体

时间:2018-09-02 20:02:56

标签: mysql database symfony doctrine dql

我在删除数据库中的所有行时遇到问题。我不知道该怎么做。我正在使用Symfony和Doctrine。在我读过的某个地方,这是不可能的“正常”方式,但是我可以通过DQL(createQuery)来做到,但是我不知道语法。

public function resetDatabase(EntityManagerInterface $em)
{
    $query = $em->createQuery('DELETE ???');
    $query->execute();

    return new Response('', Response::HTTP_OK);
}

感谢任何建议

2 个答案:

答案 0 :(得分:3)

public function resetDatabase(EntityManagerInterface $em)
{
    $query = $em->createQuery(
          'DELETE FROM App\Entity\YourEntity e WHERE e.age > :ageparameter'
       )->setParameter('ageparameter', 10)->execute();

    return new Response('', Response::HTTP_OK);
}

答案 1 :(得分:0)

哦,我知道了,怎么做。

/**
* @Route("/resetdatabase")
*/    
public function resetDatabase(EntityManagerInterface $em)
{
    $repository = $em->getRepository(MoneyDatabase::class);
    $entities = $repository->findAll();

    foreach ($entities as $entity) {
        $em->remove($entity);
    }
    $em->flush();

    return new Response('', Response::HTTP_OK);
}

但是有时它必须运行两次,因为某种方式在30秒后实体会返回(但是只有强制性列,其他则为null)。第二次运行后,它完全消失了。奇怪的是,它有时只做。为什么会这样呢?