【发布时间】:2014-03-04 07:59:25
【问题描述】:
我有与设置实体相关的产品实体,具有一对一的关系。所有产品均已导入,并且产品在开始时在设置表中没有相关行。
当使用 Symfony 更新产品时,会创建适当的关系,因此我在产品和设置之间有 OneToOne。这是使用简单的 INSERT 语句完成的:
INSERT INTO settings (id_product, setting_1, setting_3, setting_3) VALUES (11153, '0', '1', '1');
由于注释和方法,此插入由 Symfony 自动制作:
$em->merge($product);
$em->flush();
不幸的是,当我下次尝试更新产品时,另一个插入设置表完成,显然我有错误,因为 id_product 是 PK 并且必须是唯一的。如果 Product 和 Setting 之间存在关系,我应该怎么做才能强制 Symfony 执行 UPDATE 而不是 INSERT?我使用最新版本的 Symfony 创作音乐。
【问题讨论】:
-
您能否发布有关如何更新设置实体的代码?通常, $product->getSetting()->setSomeVar('foobar') 应该更新设置实体而不是创建一个新实体...
-
我把它贴出来——看看合并方法。当它到达时,它会自动更新(总是新插入 - 问题)由于注释设置实体......
-
我仍然认为我们需要更多关于注释、级联、使用合并 v 持久等的信息。IME,我只使用合并来管理已与实体管理器分离的实体。如果你使用 persist() 而不是 merge() 会发生什么?
标签: php symfony doctrine-orm entity one-to-one