如何同时获得 Doctrine Query 中过滤器的多个值的结果?

问题描述

我在 Symfony 4.4 中构建了一个带有 andWhere 子句的查询过滤器,可以通过复选框在 Twig 中进行操作。当您为每个过滤器只选择一个值时,它的效果非常好。但现在我希望能够为每个过滤器输入多个值。是否有一个选项可以让我为每个过滤器传递一个数组,并在查询中将这些作为字符串/整数用 foreach 处理?

控制器:

   public function filter_index(Request $request,PaginatorInterface $paginator)
   {
       $em = $this->getDoctrine()->getManager();
       //connect with Repository
       $fachRepository = $em->getRepository(Fach::class);
       $allFachQuery = $fachRepository->findByFilter2();
       if (($request->query->getAlnum('filter'))
               or($request->query->getAlnum('filter2'))
               ...
               {
               $allFachQuery
                   ->where('f.a LIKE :a')
                   ->andwhere('fh.b LIKE :b')
                   ...
                   ->setParameter('a','%' . $request->query->getAlnum('filter'). '%')
                   ->setParameter('b','%' . $request->query->getAlnum('filter2'). '%')
                   ...
       }
       $query = $allFachQuery->getQuery();
       /**
        * @var $paginator \Knp\Composer\Pager\Paginator
        */
       $result = $paginator->paginate(
               $query,$request->query->getInt('page',1),$request->query->getInt('limit',6),);

存储库:

   public function findByFilter2()
   {
       return $this->createqueryBuilder('f')
           ->andWhere('f.a is not NULL')
           ->leftJoin('f.h','fh')
       ;
   }
   public function findAllFach()
   {
       return $this->findBy(array(),array('a' => 'ASC'));
   }
   public function findAllH()
   {
       return $this->findBy(array(),array('h' => 'ASC'));
   }

树枝:

<form action="{{ path('frontend_fach') }}" method="get">
    <div class="row">
        <h2>A</h2>    
        <label>
           <input  type="checkBox" name="filter" value="HM" /><span></span>H M
        </label>
        <label>
           <input  type="checkBox" name="filter" value="VM" /><span></span>V M
        </label>
        ...
   </div>
    <div class="row">
        <h2>B</h2>    
        <label>
           <input  type="checkBox" name="filter2" value="BM" /><span></span>B M
        </label>
        ...
   </div>
   <button type="submit">Filter</button>
</form>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)