Example #1
0
 protected function join(QueryBuilder $qb, $add = false)
 {
     $qb->innerjoin('user.user', 'securityUser');
     $qb->leftjoin('user.activities', 'activities');
     $qb->leftjoin('user.assignedAccount', 'assignedAccount');
     $qb->leftjoin('assignedAccount.end', 'assignedAccount_end');
     $qb->leftjoin('user.agencies', 'agencies');
     $qb->leftjoin('agencies.agency', 'agency');
     $qb->leftjoin('agencies.end', 'agencies_end');
     if ($add) {
         $qb->addSelect('securityUser');
         $qb->addSelect('assignedAccount');
         $qb->addSelect('agencies');
         $qb->addSelect('agency');
         $qb->addSelect('agencies_end');
         $qb->addSelect('assignedAccount_end');
     }
     return $qb;
 }
 /**
  * Hydrate query
  *
  * @param  QueryBuilder $query
  *
  * @return QueryBuilder
  */
 private function hydrateQuery($query)
 {
     foreach ($this->joins as $join) {
         $query->innerjoin($join['relation'] . ' ' . $join['alias'], $join['on']);
     }
     foreach ($this->wheres as $where) {
         if ($where['type'] == null) {
             $query->andWhere($where['alias'] . '.' . $where['property'] . ' = :v' . $this->index)->setParameter('v' . $this->index, $where['value']);
         } else {
             switch ($where['type']) {
                 case 'LIKE':
                     $query->andWhere($where['alias'] . '.' . $where['property'] . ' LIKE :v' . $this->index)->setParameter('v' . $this->index, '%' . $where['value'] . '%');
                     break;
                 case 'OR_LIKE':
                     $expr = $query->expr()->orX();
                     foreach ($where['property'] as $property) {
                         $expr->add($query->expr()->like($property['property'], ':v' . $this->index));
                         $query->setParameter('v' . $this->index, $property['value']);
                         $this->index++;
                     }
                     $query->andWhere($expr);
                     break;
                 case 'MIN':
                     $query->andWhere($where['alias'] . '.' . $where['property'] . ' >= :v' . $this->index)->setParameter('v' . $this->index, '%' . $where['value'] . '%');
                     break;
             }
         }
         $this->index++;
     }
     return $query;
 }