Source of file ExtrasHydrator.php
Size: 1,391 Bytes - Last Modified: 2023-11-16T22:56:02+01:00
/home/websites/teicee/packagist/site/phpdoc/conf/../vendor/teicee/dorm-bundle/src/Hydration/ExtrasHydrator.php
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | <?phpnamespace TIC\DormBundle\Hydration; use Doctrine\ORM\Internal\Hydration\ObjectHydrator; /** * Récupération d'une liste d'entités en intégrant les résultats de colonnes supplémentaires dans des propriétés. * Note: les entités doivent disposer d'une propriété correspondante accessible (public ou avec setter/mutator) * * Exemple: * > SELECT a, COUNT(a.extras) AS nbExtras FROM t * < array( a1, a2, a3... ) avec a1.nbExtras, a2.nbExtras... */class ExtrasHydrator extends ObjectHydrator {/** * Hydrates all rows from the current statement instance at once. * * @return mixed[] */protected function hydrateAllData(): array { $result = array(); foreach (parent::hydrateAllData() as $row) { if (! \is_object($row[0])) continue; foreach ($row as $field => $value) { if (! \is_int($field)) $this->setExtraField($row[0], $field, $value); } $result[] = $row[0]; } return $result; } /** * @param Object $object Entity * @param string $property Field name * @param string $value Field value */protected function setExtraField($object, $property, $value) { $mutator = 'set' . \ucfirst($property); if (\method_exists($object, $mutator)) return \call_user_func(array($object, $mutator), $value); if (\property_exists($object, $property)) $object->{$property} = $value; } } |