当在Symfony 2和学说中创建实体时,创建其他实体



我想在创建其他相关实体(例如创建银行帐户以将其资金存储在不同的货币中。

我试图为此使用学说实体听众和postPersist事件,这看起来完全是我想要的,但是经过数小时的极其奇怪的行为(持久性例外和重复记录),我读过,我不建议这样做从学说事件处理程序中发出另一个flush()

我如何解决这个问题?我知道我可以使用一些外部队列系统通过背景工人进行注册和处理事件,但看起来像是我用例的复杂方案的一种方法。

有更好的方法吗?

您可能正在寻找postFlush事件?

请参阅:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/reference/events.html#postflush

function postFlush($args) {
    $em = $args->getEntityManager();
    foreach ($em->getUnitOfWork()->getScheduledEntityInsertions() as $entity) {
        if ($entity instanceof User) {
            // check for existing accounts, etc.
            // create new, if needed
            // $em->persist($account);
        }
    }
    $em->flush();
}

相关内容

  • 没有找到相关文章

最新更新