paginationParams($page, $limit); $countQb = $this->pieces->createQueryBuilder('pi') ->select('COUNT(pi.id)') ; $qb = $this->pieces->createQueryBuilder('pi') ->select('pi.id', 'pi.name', 'pi.reference', 'pi.prix') ->orderBy('pi.name', 'ASC') ; if ('' !== $search) { $countQb->andWhere('LOWER(pi.name) LIKE LOWER(:search) OR LOWER(pi.reference) LIKE LOWER(:search)') ->setParameter('search', "%{$search}%") ; $qb->andWhere('LOWER(pi.name) LIKE LOWER(:search) OR LOWER(pi.reference) LIKE LOWER(:search)') ->setParameter('search', "%{$search}%") ; } $total = (int) $countQb->getQuery()->getSingleScalarResult(); $items = $qb->setFirstResult($p['offset']) ->setMaxResults($p['limit']) ->getQuery() ->getArrayResult() ; return $this->paginatedResponse($items, $total, $p['page'], $p['limit']); } }