-1

我们如何在 Symfony / Doctrine 中执行之前手动编辑最终的 SQL 查询?

我需要在 SQL 中手动更改值,我知道我可以在实体中编辑它 postPersist,但我在一个特殊情况下,这个解决方案在我的架构中不起作用。

一个小想法:

public function preFlush/onFlush/PostFlush((PreFlushEventArgs/.../...)  $eventArgs) {
    $em = $eventArgs->getEntityManager();
    $uow = $em->getUnitOfWork();

    foreach ($uow->getScheduledEntityInsertions() as $entity) {

        if($entity instanceof MyEntity) {
              //Change my value directly in SQL query

        }

    }

}
4

1 回答 1

-1
public function getSubscribedEvents(): array
{
    return [
        Events::preUpdate  => 'preUpdate',
    ];
}

public function preUpdate(LifecycleEventArgs $args): void
{
    $object = $args->getObject();

    if ($object instanceof MyEntity) {
        $object->setSomething('something');

        $meta = $args->getObjectManager()->getClassMetadata(MyEntity::class);
        $om->getUnitOfWork()->recomputeSingleEntityChangeSet($meta, $object);
    }
}
于 2022-02-10T14:14:40.097 回答