public function searchByContains(array $criteria, array $orderBy = null, $page = 0, $pageSize = PHP_INT_MAX) { if ($page < 0 || $pageSize < 1) { throw new \Exception("Invalid page or pageSize: page must be >= 0 and pageSize must be > 0"); } else { $criteriaObj = new Criteria(); $i = 0; foreach ($criteria as $field => $value) { if ($value == null) { continue; } else { if ($i++ == 0) { $criteriaObj->where($criteriaObj->expr()->contains($field, $value)); } else { $criteriaObj->orWhere($criteriaObj->expr()->contains($field, $value)); } } } if ($orderBy != null) { $criteriaObj->orderBy($orderBy); } $total = $this->repository->matching($criteriaObj)->count(); $query = $this->repository->createQueryBuilder("q")->addCriteria($criteriaObj); $items = $query->setFirstResult($page * $pageSize)->setMaxResults($pageSize)->getQuery()->getResult(); return ResponseUtils::createSearchResponse($total, $items, $page, $pageSize); } }
public function resolve(int $currentShopId, string $url) : ShopInterface { $criteria = new Criteria(); $criteria->where($criteria->expr()->eq('id', $currentShopId)); $criteria->orWhere($criteria->expr()->eq('url', $url)); $criteria->orWhere($criteria->expr()->gte('id', 1)); return $this->matching($criteria)->first(); }
public function testOrWhere() { $expr = new Comparison("field", "=", "value"); $criteria = new Criteria(); $criteria->where($expr); $expr = $criteria->getWhereExpression(); $criteria->orWhere($expr); $where = $criteria->getWhereExpression(); $this->assertInstanceOf('Doctrine\\Common\\Collections\\Expr\\CompositeExpression', $where); $this->assertEquals(CompositeExpression::TYPE_OR, $where->getType()); $this->assertSame(array($expr, $expr), $where->getExpressionList()); }
public function loadUserByUsername($username) { $criteria = new Criteria(); $criteria->where(new Comparison("username", Comparison::EQ, $username)); $criteria->orWhere(new Comparison("email", Comparison::EQ, $username)); $criteria->setMaxResults(1); $user = $this->em->getRepository("CoreUserBundle:User")->matching($criteria)->first(); if ($user) { return $user; } //throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username)); throw new BadCredentialsException("Bad credentials."); }
/** * @param Criteria $criteria */ protected function addDefaultCriteria(Criteria $criteria) { $defaultCriteria = $this->getCriteriaWithOutOrganizationAndUser(); $criteria->orWhere(Criteria::expr()->orX($defaultCriteria->getWhereExpression())); }
public function findAllPublicWithQuery($query, $page, $itemPerPage) { $publicCriteria = new Criteria(); $publicCriteria->where($publicCriteria->expr()->eq('r.published', true)); $queryCriteria = new Criteria(); $queryCriteria->where($queryCriteria->expr()->contains('r.title', $query)); $queryCriteria->orWhere($queryCriteria->expr()->contains('r.content', $query)); $orderCriteria = new Criteria(); $orderCriteria->orderBy(['r.dateUpdated' => 'DESC']); /** @var QueryBuilder $queryBuilder */ $queryBuilder = $this->objectRepository->createQueryBuilder('r'); $queryBuilder->addCriteria($publicCriteria); $queryBuilder->addCriteria($queryCriteria); $queryBuilder->addCriteria($orderCriteria); $queryBuilder->setFirstResult(($page - 1) * $itemPerPage); $queryBuilder->setMaxResults($itemPerPage); return new Paginator($queryBuilder); }