#php #doctrine-query
#php #doctrine-запрос
Вопрос:
Я работаю над запросом на получение некоторого результата из базы данных, но у меня ошибка, и я не знаю, как ее повторно отправить
в моем репозитории :
public function findBySearchField($salary, $contract, $experience, $training)
{
return $this->createQueryBuilder('a')
->andWhere('a.salary = :sal')
->setParameter('sal', $salary)
->andWhere('a.contract = :con')
->setParameter('con', $contract)
->andWhere('a.experience = :exp')
->setParameter('exp', $experience)
->andWhere('a.training = :tra')
->setParameter('tra', $training)
->orderBy('a.postedAt', 'DESC')
->getQuery()
->getResult()
;
}
в моем контроллере :
public function index(Request $request, AdvertRepository $advertRepository): Response
{
$form = $this->createForm(ResearchType::class);
$form->handleRequest($request);
if ($request->getMethod() == 'POST') {
$salary = $form->get('salary')->getData();
$contract = $form->get('contract')->getData();
$experience = $form->get('experience')->getData();
$training = $form->get('training')->getData();
return $this->render('advert/index.html.twig', [
'form' => $form->createView(),
'adverts' => $advertRepository->findBySearchField(
['salary' => $salary],
['contract' => $contract],
['experience' => $experience],
['training' => $training]
),
]);
}
return $this->render('advert/index.html.twig', [
'form' => $form->createView(),
'adverts' => $advertRepository->findAll(),
]);
}
У меня ошибка «Уведомление: Неопределенное смещение: 2»
Однако, когда я делаю этот запрос в phpMyAdmin, он возвращает то, что я ищу
Комментарии:
1. Привет, Ромен, я не вижу никаких проблем с запросами, как насчет ваших файлов просмотра
2. «Обратите внимание: Неопределенное смещение: 2» Какой ФАЙЛ и какая СТРОКА? Покажите эту строку.
3. Привет! Я нахожу решение :
Ответ №1:
спасибо за ваш отзыв, я нашел решение, в моем методе findBySearchField я предоставил массивы вместо указания переменных. Это решение работает :
public function index(Request $request, AdvertRepository $advertRepository): Response
{
$form = $this->createForm(ResearchType::class);
$form->handleRequest($request);
if ($request->getMethod() == 'POST') {
return $this->render('advert/index.html.twig', [
'form' => $form->createView(),
'adverts' => $advertRepository->findBySearchField(
$salary = $form->get('salary')->getData(),
$contract = $form->get('contract')->getData(),
$experience = $form->get('experience')->getData(),
$training = $form->get('training')->getData()
),
]);
}
return $this->render('advert/index.html.twig', [
'form' => $form->createView(),
'adverts' => $advertRepository->findAll(),
]);
}