问题描述
我在 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 (将#修改为@)