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 【问题描述】:我与名为Record
和AnalyseOfCause
的实体有一个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 而不是删除对象的主要内容,如果未能解决你的问题,请参考以下文章