ArrayHydrator.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace Gedmo\Translatable\Hydrator\ORM;
  3. use Gedmo\Translatable\Query\TreeWalker\TranslationWalker;
  4. use Doctrine\ORM\Internal\Hydration\ArrayHydrator as BaseArrayHydrator;
  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 ArrayHydrator extends BaseArrayHydrator
  18. {
  19. /**
  20. * {@inheritdoc}
  21. */
  22. protected function _hydrateRow(array $data, array &$cache, array &$result)
  23. {
  24. if (isset($this->_hints[TranslationWalker::HINT_TRANSLATION_FALLBACKS])) {
  25. foreach ($this->_hints[TranslationWalker::HINT_TRANSLATION_FALLBACKS] as $field => $alias) {
  26. if ($data[$field] && !$data[$alias]) {
  27. $data[$alias] = $data[$field];
  28. }
  29. unset($data[$field]);
  30. }
  31. }
  32. return parent::_hydrateRow($data, $cache, $result);
  33. }
  34. }