querybuilder出现问题(多个单词具有manyToMany关系)

时间:2019-03-24 18:17:26

标签: php symfony symfony4

我正在使用symfony 4,尝试对与具有多对多关系的另一个实体相关的实体进行多重搜索时遇到问题(在那里正确配置了一切)。

我的第一个实体是生物,它与标签实体有关。我成功配置了它们之间的manytomany关系。我在模板中添加了一个搜索表单,当我用多个单词填充搜索时,搜索2个或更多单词生物的名称或标签可以正常工作,但是如果我尝试查找与两个不同标签相对应的生物,则此方法不起作用。

这是我在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()
  ;
}

我希望这可以用于搜索同一个生物的标签,但是不能。

0 个答案:

没有答案