ObjectHydrator.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace Gedmo\Translatable\Hydrator\ORM;
  3. use Gedmo\Translatable\Query\TreeWalker\TranslationWalker;
  4. use Doctrine\ORM\Internal\Hydration\ObjectHydrator as BaseObjectHydrator;
  5. /**
  6. * If query uses TranslationQueryWalker and is hydrating
  7. * objects - when it requires this custom object hydrator
  8. * in order to skip onLoad event from triggering retranslation
  9. * of the fields
  10. *
  11. * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  12. * @package Gedmo.Translatable.Hydrator.ORM
  13. * @subpackage ObjectHydrator
  14. * @link http://www.gediminasm.org
  15. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  16. */
  17. class ObjectHydrator extends BaseObjectHydrator
  18. {
  19. /**
  20. * 2.1 version
  21. * {@inheritdoc}
  22. */
  23. protected function _hydrateAll()
  24. {
  25. $listener = $this->_hints[TranslationWalker::HINT_TRANSLATION_LISTENER];
  26. $listener->setSkipOnLoad(true);
  27. $result = parent::_hydrateAll();
  28. $listener->setSkipOnLoad(false);
  29. return $result;
  30. }
  31. /**
  32. * 2.2 version
  33. * {@inheritdoc}
  34. */
  35. protected function hydrateAllData()
  36. {
  37. $listener = $this->_hints[TranslationWalker::HINT_TRANSLATION_LISTENER];
  38. $listener->setSkipOnLoad(true);
  39. $result = parent::hydrateAllData();
  40. $listener->setSkipOnLoad(false);
  41. return $result;
  42. }
  43. }