删除Doctrine中的记录

Has*_*dar 11 php doctrine symfony doctrine-orm

我正在尝试删除Doctrine中的记录,但我不知道它为什么不删除.

这是我的代码:

function del_user($id)
{
    $single_user = $entityManager->find('Users', $id);

    $entityManager->remove($single_user);

    $entityManager->flush();
}
Run Code Online (Sandbox Code Playgroud)

另外:我如何回应查询以查看此处发生了什么?

Ram*_*asr 20

这是一个老问题,似乎还没有答案.作为参考,我将离开这里以供更多参考.您也可以查看学说文档

要删除记录,您需要(假设您在控制器中):

// get EntityManager
$em = $this->getDoctrine()->getManager();

// Get a reference to the entity ( will not generate a query )
$user = $em->getReference('ProjectBundle:User', $id);

// OR you can get the entity itself ( will generate a query )
// $user = $em->getRepository('ProjectBundle:User')->find($id);

// Remove it and flush
$em->remove($user);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

如果您只是想删除实体而不首先检查它是否存在,那么使用第一种获取引用的方法通常会更好,因为它不会查询数据库并且只会创建一个可用于删除实体的代理对象.

如果要确保此ID首先对应于有效实体,则第二种方法更好,因为它会在尝试删除实体之前查询数据库中的实体.


小智 -2

尝试一下var_dump()你的$single_user。如果是“ null”,则不存在?

还要检查“Users”是否是有效的实体名称(没有命名空间?),并且 $id 是否引用用户的 PK?

如果您想查看执行的查询,请检查 mysql/sql/... 日志或查看 Doctrine\DBAL\Logging\EchoSQLLogger