Exemplo n.º 1
0
 /**
  * @param string $filter_str
  * @param QueryBuilder $query
  * @param string $column
  */
 public function createStringCondition($filter_str, $query, $column)
 {
     if ($filter_str !== null) {
         if (preg_match('/^%.+%$/', $filter_str)) {
             $query->andWhere($query->expr()->like($column, "'" . $filter_str . "'"));
         } else {
             $query->andWhere($query->expr()->eq($column, "'" . $filter_str . "'"));
         }
     }
 }
 /**
  * @param EntityManager
  * @param ISortableScope
  * @param QueryBuilder
  */
 private function addScope(EntityManager $em, ISortableScope $sortable, QueryBuilder $qb)
 {
     $meta = $em->getClassMetadata(get_class($sortable));
     $rc = new \ReflectionClass($sortable);
     foreach ($sortable->getSortableScope() as $field) {
         if ($meta->hasField($field) || $meta->hasAssociation($field)) {
             $rp = $rc->getProperty($field);
             $rp->setAccessible(TRUE);
             $qb->andWhere($qb->expr()->eq('e.' . $field, ':p_' . $field));
             $qb->setParameter('p_' . $field, $rp->getValue($sortable));
         } elseif ($meta->discriminatorColumn['name'] === $field) {
             if (($type = array_search(get_class($sortable), $meta->discriminatorMap)) === FALSE) {
                 $type = get_class($sortable);
             }
             $qb->andWhere('e INSTANCE OF :discr_type')->setParameter('discr_type', $type);
         } else {
             throw new InvalidScopeException("Scope field {$field} is neither field, association nor discriminator");
         }
     }
 }