#symfony #doctrine #dql
#symfony #доктрина #dql
Вопрос:
У меня есть строка поиска на моей странице, и действие в моем ответе за поиск того, что ищет пользователь, заключается в следующем :
public function searchAction(Request $request){
$em = $this->container->get('doctrine')->getEntityManager();
$evenements= $em->getRepository('Mql14mqlmeBundle:Evenement')->findAll();
if ('POST' === $request->getMethod()) {
$search = $request->get('search');
$query = $this->container->get('doctrine')->getEntityManager()->createQuery( 'SELECT e FROM Mql14mqlmeBundle:Evenement e WHERE e.nom LIKE :search')
->setParameter('search', $search);
$resultats = $query->getResult();
return $this->container->get('templating')->renderResponse('Mql14mqlmeBundle:Event:search.html.twig', array(
'resultats'=>$resultats,
));
}
return $this->listerAction();
}
Это работает, если пользователь вводит точное имя некоторого события в базу данных, но я хочу сделать поиск возможным, даже если это только часть имени, я попробовал это в запросе:
$query = $this->container->get('doctrine')->getEntityManager()->createQuery( 'SELECT e FROM Mql14mqlmeBundle:Evenement e WHERE e.nom LIKE :%search%')
->setParameter('search', $search);
Но я получаю эту ошибку: недопустимый формат параметра, : given, но:name или ?ожидаемое число.
Ответ №1:
Попробуйте изменить параметр следующим образом:
$query = $this
->container
->get('doctrine')
->getEntityManager()
->createQuery(
'SELECT e FROM Mql14mqlmeBundle:Evenement e WHERE e.nom LIKE :search'
)
->setParameter('search', '%'.$search.'%');
Комментарии:
1. На этот раз я не получаю ошибку, но я не получаю никакого результата, просто пустая страница
2. можете ли вы сказать мне, как получить к нему доступ? Спасибо
3. Это зависит от того, какой веб-сервер вы используете и от его конфигурации. Это может сильно отличаться от одной настройки к другой. Посмотрите на конфигурацию вашего веб-сервера.