我已经在symfony中使用postUpdate事件实现了doctrine事件订阅者。我正在尝试在postUpdate事件中打印我的文档ID。如果我插入单个文档,这样可以正常工作。当我尝试一次插入一组30个文档时出现问题。问题只是一个文件ID正在打印,虽然我一次插入30个文件。
以下是我已实施的代码。
services.yml
namespace KonnectEz\CoreBundle\Foundation\EventListener;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Events;
use KonnectEz\CoreBundle\Document\User;
use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
class DoctrineSubscriber implements EventSubscriber {
private $container = null;
private $userHelperService = null;
public function __construct($container) {
$this->container = $container;
}
public function getSubscribedEvents() {
return array(
Events::postUpdate,
);
}
public function postUpdate(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if ($entity instanceof User) {
error_log("Entity Id:".$entity->getId());
}
}
}
Doctrine event subscriber:
$totalEntitiesCount = sizeof($entities);
$entityCount = 0;
if ($entityCount == 30 || $entityCount == $totalEntitiesCount) {
$dm->flush();
$entityCount = 0;
}
我有一个函数,我一次在一组30个文档上刷新。那是
{{1}}
为什么没有为要插入的每个文档调用postUpdate事件? 我希望为每个插入的文档调用此事件。如何解决此问题?
答案 0 :(得分:2)
postUpdate
。
如果您希望在插入后进行更改,请改为添加postPersist
或postFlush
事件。
您可以在此处找到有关学说事件的详细信息http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/events.html(mongoDB版本)
此外,我还会在eventListener文件中使用断点打开x-debug,看看它是否被触发。