Проблема с построителем запросов (несколько слов с отношением manyToMany) - PullRequest
0 голосов
/ 24 марта 2019

Я использую Symfony 4, и у меня возникают проблемы при попытке выполнить многократный поиск сущности, которая связана с другой сущностью с отношением "многие ко многим" (там все правильно настроено).

Моя первая сущность - это существо, и оно связано с сущностью тега. Я настроил manytomany отношение между ними успешно. Я добавил поисковую форму в свой шаблон, и когда я заполняю поиск несколькими словами, он отлично работает при поиске по имени или тегу существа из двух или более слов, но не работает, если я пытаюсь найти существо, соответствующее двум разным тегам.

Вот функция, которую я использую в моем CreatureRepository:

public function findAllBySearch(string $search){
      $words = [];
      $words = explode(' ', $search);
      $qb = $this->createQueryBuilder('c');
      $qb->leftJoin('c.tags', 't');
      foreach ($words as $key => $word) {
        $qb->andWhere($qb->expr()->orX(
                    $qb->expr()->like('c.nom', ':val'.$key),
                    $qb->expr()->like('c.texteLead', ':val'.$key),
                    $qb->expr()->like('t.nom', ':val'.$key)
                  ))
        ->setParameter('val'.$key, '%'.$word.'%');
      }
      return $qb->orderBy('c.dateCreation', 'DESC')
                ->setMaxResults(10)
                ->getQuery()
                ->getResult()
  ;
}

Я ожидал, что это сработает для поиска по тегам того же существа, но это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...