@@ -371,12 +371,6 @@ Next, refactor the ``Document`` class to take advantage of these callbacks::
371
371
// do whatever you want to generate a unique name
372
372
$filename = sha1(uniqid(mt_rand(), true));
373
373
$this->path = $filename.'.'.$this->getFile()->guessExtension();
374
- // Note: is you choose to use EvensubScribers, this change has no effect un database Update
375
- // the 'initial' value set in {@link self::setFile()} is used instead. As this occurs
376
- // inside EntityManager#flush() and changeSets are not tracked.
377
- // use \Doctrine\Common\Persistence\Event\PreUpdateEventArgs $args as the handler fn param and
378
- // $args->setNewValue('path', $filename);
379
- // source: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#preupdate
380
374
}
381
375
}
382
376
@@ -416,6 +410,16 @@ Next, refactor the ``Document`` class to take advantage of these callbacks::
416
410
}
417
411
}
418
412
413
+ .. caution ::
414
+
415
+ When using Doctrine EvensubScribers' preUpdate(\D octrine\C ommon\P ersistence\E vent\P reUpdateEventArgs $args)
416
+ callback instead of lifecycle callbacks you also need to invoke, ``$args->setNewValue('path', $filename); ``
417
+ as at this point changeSets are not updated and the ``path `` change just made won't have effect
418
+ in the data base record.
419
+ For full reference on preUpdate event restrictions, see `preUpdate `_ in the in the Doctrine Events documentation.
420
+
421
+ .. _`preUpdate` : http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#preupdate
422
+
419
423
The class now does everything you need: it generates a unique filename before
420
424
persisting, moves the file after persisting, and removes the file if the
421
425
entity is ever deleted.
0 commit comments