Source of file GroupobjHydrator.php
Size: 1,303 Bytes - Last Modified: 2023-11-16T22:56:02+01:00
/home/websites/teicee/packagist/site/phpdoc/conf/../vendor/teicee/dorm-bundle/src/Hydration/GroupobjHydrator.php
| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | <?phpnamespace TIC\DormBundle\Hydration; use Doctrine\ORM\Internal\Hydration\ObjectHydrator; /** * Récupération d'une liste d'entités en les regroupants selon la valeur d'une colonne supplémentaire. * * Exemple: * > SELECT a, a.category FROM t * < array( * c1 => array( a1, a2... ) * c2 => array( a1, a3, a5... ) * ... * ) */class GroupobjHydrator extends ObjectHydrator {/** * Hydrates all rows from the current statement instance at once. * * @return mixed[] */protected function hydrateAllData(): array { $result = array(); $group_index = null; foreach (parent::hydrateAllData() as $row) { // la 1ère colonne ne contenant pas un objet sera utilisée comme groupe if ($group_index === null) foreach ($row as $index => $value) { if (! \is_object($value)) { $group_index = $index; break; } } // initialisation du groupe dans les résultats $group = $row[$group_index]; if ($group === null || $group === '') $group = "default"; if (! isset($result[$group])) $result[$group] = array(); // la 1ère colonne contenant un objet sera ajoutée au groupe foreach ($row as $index => $value) { if ($index !== $group_index) { $result[$group][] = $value; break; } } } return $result; } } |