微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何同时获得 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 举报,一经查实,本站将立刻删除。