【发布时间】:2013-01-06 21:14:17
【问题描述】:
好吧,我不知道如何修复我的项目中的错误。
我正在尝试处理具有多对多属性关系的嵌套表单。 错误表明它无法创建关联,因为其中一方需要 ID。
好的。所以我试图只创造缺失的一面。 但还是同样的错误。
最后,我意识到这个简单的代码仍然存在同样的问题:
public function onSuccess(Page $page)
{
$this->em->flush();
}
如果您收到诸如“嘿,没有什么可刷新的!”之类的错误消息,我将不胜感激。 但是不,仍然是同样的错误:我必须先创建对象(及其 id)才能关联它。
我查看了堆栈跟踪。是的,似乎 UnitOfWork ->computeAssociationChanges 在刷新后被调用,并且需要关联对象的 Id。
如果 flush 命令产生错误,我如何在数据库中创建对象?
【问题讨论】:
-
你使用什么 id 生成策略?教义 2 手册中的第 4.8 节。如果它是自动的,那么你不需要在冲洗时做任何特别的事情。如果您使用手动策略,则需要在刷新之前创建 id。可能会考虑创建一个命令对象并测试您的模型,而无需经过所有的表单处理。
-
感谢您的回答(很抱歉这么晚才回复...)。我的大多数表都是在 auto.id 中生成的。只有一张桌子不是。这是保存多对多关系属性的表。因此,它只有每边的两个 id 和属性。我同意我需要先拥有两个 ID 才能建立这种关系。什么是命令对象?我如何使用它来测试模型?
标签: symfony doctrine-orm