paginationParams($page, $limit); $countQb = $this->machines->createQueryBuilder('m') ->select('COUNT(m.id)') ; $qb = $this->machines->createQueryBuilder('m') ->select('m.id', 'm.name', 'm.reference', 'm.prix') ->orderBy('m.name', 'ASC') ; if ('' !== $search) { $countQb->andWhere('LOWER(m.name) LIKE LOWER(:search) OR LOWER(m.reference) LIKE LOWER(:search)') ->setParameter('search', "%{$search}%") ; $qb->andWhere('LOWER(m.name) LIKE LOWER(:search) OR LOWER(m.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']); } }