private static function getPairsAdvanced(EntityDao $dao, array $options)
 {
     $qb = $dao->createQueryBuilder('e')->select("e")->resetDQLPart('from')->from($dao->getClassName(), 'e', 'e.' . $options['key'])->autoJoinOrderBy((array) $options['orderBy']);
     foreach ($options['criteria'] as $key => $value) {
         if (is_numeric($key) && is_callable($value)) {
             $value($qb, 'e');
         } else {
             $qb->whereCriteria([$key => $value]);
         }
     }
     $query = $qb->getQuery();
     if (is_string($options['value'])) {
         $parts = explode('.', $options['value']);
         $callback = function ($value) use($parts) {
             foreach ($parts as $part) {
                 $value = $value->{$part};
             }
             return $value;
         };
     } else {
         $callback = $options['value'];
     }
     $result = $query->getResult();
     return array_map($callback, $result);
 }
Beispiel #2
0
 /**
  * @return Entities\IProcess
  */
 private function createProcessEntity()
 {
     $className = $this->dao->getClassName();
     return new $className();
 }