translatableStringHelper = $translatableStringHelper; } /** * @return JsonResponse */ #[Route(path: '{_locale}/postalcode/search')] public function searchAction(Request $request) { $pattern = $request->query->getAlnum('q', ''); if (empty($pattern)) { return new JsonResponse(['results' => [], 'pagination' => ['more' => false]]); } $query = $this->managerRegistry->getManager() ->createQuery( sprintf( 'SELECT p.id AS id, p.name AS name, p.code AS code, ' .'country.name AS country_name, ' .'country.countryCode AS country_code ' .'FROM %s p ' .'JOIN p.country country ' .'WHERE LOWER(p.name) LIKE LOWER(:pattern) OR LOWER(p.code) LIKE LOWER(:pattern) ' .'ORDER BY code', PostalCode::class ) ) ->setParameter('pattern', '%'.$pattern.'%') ->setMaxResults(30); $results = \array_map(function ($row) { $row['country_name'] = $this->translatableStringHelper->localize($row['country_name']); $row['text'] = $row['code'].' '.$row['name'].' ('.$row['country_name'].')'; return $row; }, $query->getResult(Query::HYDRATE_ARRAY)); return new JsonResponse(['results' => $results, 'pagination' => ['more' => false]]); } }