Symfony 5,删除对象时出错:在一对一关系中创建新 id 而不是删除对象

Posted

技术标签:

【中文标题】Symfony 5,删除对象时出错:在一对一关系中创建新 id 而不是删除对象【英文标题】:Symfony 5 , Error deleting object : creating new id instead of deleting object in One to one relation 【发布时间】:2022-01-08 13:11:44 【问题描述】:

我与名为RecordAnalyseOfCause 的实体有一个OneToOne 关联。

当我将记录实体发送给我的控制者并且我想删除与之相关的AnalyseOfCause 而不是删除 AnalyseOfCause 对象,它只是保留相同的对象并通过提供新的最后一个 ID 而不是删除它来更改他的 ID

PS : 当我根本不调用Record 对象时想直接删除AnalyseOfCause 发送AnalyseOfCause 的id strong> 并直接在另一个有效的函数中找到他。所以我不明白是什么问题。

(我观察到,当我在函数中查找 analyseOfCause 对象时,通过教义->repo->find(id) 它确实删除了,但是我在同一函数中调用了记录对象,即使删除正在工作也停止工作。奇怪的是当我让 ctrl+z 回到工作版本时它仍然无法工作,所以奇怪的行为) PS:不是针对这 2 个对象,而是针对其他对象,我在我的应用程序中使用 Softdeletable 捆绑包。我不知道它是否与这个问题有关..

提前感谢您的帮助:)

【问题讨论】:

您似乎正在使用两个 entityManager 实例($entitymanager 和 $em)。尝试只使用其中一种。 我已编辑问题。问题不在于这个 【参考方案1】:

您似乎正在使用两个 entityManager 实例($entitymanager 和 $em)。尝试只使用其中一种。

例如:

如果你使用 paramConverters:

public function hard_delete(Request $request, ComplainRecord $complainRecord, EntityManagerInterface $em) 

   $getAnalyseOfCause = $complainRecord->getAnalyseOfCause();

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

   ...


如果您只使用“原始”ID(并且没有注入 entityManager):

public function hard_delete(Request $request) 


   $em = $this->getDoctrine()->getManager();

   $repository = $em->getRepository(GetAnalyseOfCause::class);
   $analyseOfCause = $repository->find($request->get('slug'));

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

   ...


【讨论】:

以上是关于Symfony 5,删除对象时出错:在一对一关系中创建新 id 而不是删除对象的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 一对一关系

Symfony 2 与 Doctrine 中的一对多关系

Symfony 2 使用一对多数据库关系的嵌入式表单

使用 Hibernate 删除一对多关系中的对象时 PostgreSQL 异常

具有多对多关系的 Symfony 5 对象序列化超时

一对多、自引用关系 Symfony