6

我不敢相信我似乎在任何地方都找不到这个(不只是强制整个 SQL)。文档谈论添加、搜索、更新和删除实体,但我只是看不出如何在纯 SQL 中执行此操作:

DELETE FROM table WHERE field = "test"

我猜这只是添加和更新,所以我不能使用它:

$product = new Product();

// etc.

$em = $this->getDoctrine()->getEntityManager();
$em->persist($product);
$em->flush();

而且我认为“删除”选项也不会这样做:

$em->remove($product);
$em->flush();

那么,谁能指出我正确的方向?

4

2 回答 2

7

搜索实体并将其删除。

$em = $this->getDoctrine()->getEntityManager();
$repository = $em->getRepository('MyBundle:Product');

/** @var $product Product */
$product = $repository->findOneBy(array('field' => 'test'));
$em->remove($product);
$em->flush();
于 2013-07-28T18:11:03.173 回答
5

您可以像这样创建 DQL 查询:

$query = $repository->createQuery('DELETE FROM entity e WHERE e.id = :id');
$query->setParameter('id', $id);
$query->execute();
于 2013-07-28T18:11:57.950 回答