我正在尝试在创建另一个实体的基础上创建一个新实体。示例:我有一段关系
Sale <-- 1:M --> Payment
现在,当我坚持销售
时,您必须创建一个初始付款
,但我不知 Prop 体该怎么做。
我尝试过:
- 使用
@ORM\HasLifecycleCallbacks()
、@ORM\prePersist
或@ORM\postPersist
,但这些方法不会获取参数并且我无法保留实体付款
。我什至尝试将Sale
与Payment
关联起来(在 prePersist 方法$ payment->setSale($this)
中),希望 EntityManager 能够持久付款
给我。 info from here - 我尝试创建一个监听器 ( guided from here ),但它不起作用,监听器在任何时候都无法运行
- 在我的
SaleController::createAction()
中执行此操作,这种方式显然很简单并且有效,但这并不优雅,也违背了我的应用程序的良好设计,此操作是一部分业务逻辑并在各个部分重复
最佳答案
在我看来,您列出的 3 个解决方案中,有 3 个仍然是错误最少的。它很简单,不太复杂,并且以后很容易重构。
但如果您正在寻找一个干净的解决方案,我认为您需要的是表单处理程序或类似的服务。 看看FOSUserBundle one .
基本上,您将创建一个 PaymentManager 类,并在处理所有销售表单内容后,将所有收集到的信息传递给 PaymentManager 并让它处理 Payment 实体的所有创建/持久逻辑。
关于symfony - 基于另一个(postPersist)Doctrine2的创建创建一个新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599517/