【问题标题】:Symfony cascade update to a parent relationSymfony 级联更新到父关系
【发布时间】:2018-02-17 10:44:25
【问题描述】:

我有一个父类 A,与类 B 的关系为 oneToMany(级联持续)

我想在更新 B 时更新 A(在经典表单/控制器中)。

我的问题是当我在 B 中做这样的事情时

$thisB->getParentA()->updateStuff()

A 修改没有保留... 不知道怎么处理。

【问题讨论】:

  • 如果没有看到您的代码,我们将无法为您提供帮助。
  • 我不想要代码我想要方法;)
  • 我不想给你密码。我希望你给我们你的代码,让我们给你一个方法。 ;-) 基本上,如果您正在处理从 DB 获取的实体,那么它们是托管实体,这意味着它们被 Doctrine 观察并在 flush() 调用时在 DB 中更新,即使之前没有调用 persist()。所以看起来你没有告诉我们一些你可能认为不重要的事情,或者你的代码中有一些错误。
  • 没有错误,它工作得很好,但我不知道在更新时是否可以从子实体更新父实体。就是这样。
  • 是的。它应该像你描述的那样工作。

标签: symfony events doctrine-orm


【解决方案1】:

看看this answer。您的 B 实体可能不是关系的拥有方,因此不会对其进行检查。

来自docs

Doctrine 只会检查关联的拥有方 变化。

OneToMany 始终是双向关联的反面。

因此,您可能应该在 A 上调用 EntityManager::persist() 以使其正常工作。

【讨论】:

  • A 和 B 在我提交每个修改时都会更新。但是当只修改 B 时,我不能从 B 修改 A。
  • 没有什么能阻止你在实体管理器上手动调用persist($thisB->getParentA())。
  • 这正是我写的那样,......这不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
相关资源
最近更新 更多