Доктрина и подобный запрос symfony2

#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. Это зависит от того, какой веб-сервер вы используете и от его конфигурации. Это может сильно отличаться от одной настройки к другой. Посмотрите на конфигурацию вашего веб-сервера.