symfony - 基于另一个(postPersist)Doctrine2的创建创建一个新实体

标签 symfony doctrine-orm

我正在尝试在创建另一个实体的基础上创建一个新实体。示例:我有一段关系

Sale <-- 1:M --> Payment

现在,当我坚持销售时,您必须创建一个初始付款,但我不知 Prop 体该怎么做。

我尝试过:

  1. 使用@ORM\HasLifecycleCallbacks()@ORM\prePersist@ORM\postPersist,但这些方法不会获取参数并且我无法保留实体付款。我什至尝试将 SalePayment 关联起来(在 prePersist 方法 $ payment->setSale($this) 中),希望 EntityManager 能够持久付款给我。 info from here
  2. 我尝试创建一个监听器 ( guided from here ),但它不起作用,监听器在任何时候都无法运行
  3. 在我的 SaleController::createAction() 中执行此操作,这种方式显然很简单并且有效,但这并不优雅,也违背了我的应用程序的良好设计,此操作是一部分业务逻辑并在各个部分重复

最佳答案

在我看来,您列出的 3 个解决方案中,有 3 个仍然是错误最少的。它很简单,不太复杂,并且以后很容易重构。

但如果您正在寻找一个干净的解决方案,我认为您需要的是表单处理程序或类似的服务。 看看FOSUserBundle one .

基本上,您将创建一个 PaymentManager 类,并在处理所有销售表单内容后,将所有收集到的信息传递给 PaymentManager 并让它处理 Payment 实体的所有创建/持久逻辑。

关于symfony - 基于另一个(postPersist)Doctrine2的创建创建一个新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599517/

相关文章:

Symfony2停止Composer将parameters.yml.dist安装到parameters.yml中

php - 原则 2 让我质疑集合的目标,一般来说,我可以在集合中使用哪些方法?

php - Doctrine YML 映射引用

php - Doctrine 2 保留实体并从插入查询中排除空字段

php - doctrine odm,查找 id 不是对象 id 的文档

mysql - 检查我的查询是否不返回实体

http - 响应中格式错误的 block

php - symfony createQueryBuilder Sql 查询

symfony - 学说 : Pagination with left Joins

view - Sonata AdminBundle 将字段显示为标签