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