我正在使用KendoUI Framework GRID返回用户当前过滤器设置的JSON。
对于过滤器,其结果看起来像这样。
"filter":{"logic":"and","filters":[{"field":"name","operator":"contains","value":"o"},{"field":"name","operator":"startswith","value":"w"}]}
我需要迭代这个数组并为doctrine创建过滤依据。我见过的每一个样本都表明这一切都在一起发生,这对我的情景不起作用。
我也使用Symfony 3.0,因此下面的代码会创建存储库。
$repository = $this->getDoctrine()->getRepository('AppBundle:Company');
然后我为目前的其余代码执行此操作。
$company_total = $repository->findAll();
$company_records = $repository->findBy(array(),$sort,$pageSize,($page-1)*$pageSize);
$data["total"] = count($company_total);
foreach($company_records as $company){
$temp["id"] = $company->getId();
$temp["name"] = $company->getName();
$temp["phone"] = $company->getPhone();
$temp["email"] = $company->getEmail();
$data["data"][] = $temp;
}
//converts data to JSON
return new JsonResponse($data);
所有这些代码正在做的是返回一个JSON响应到Kendo UI网格控件,以便它知道要显示什么。我循环在company_records上创建我需要的结构。
我需要以某种方式将这些过滤器应用于$ company_records 动态和非静态。这可能吗?
资源:
以下是在所有示例中静态执行
How do I use a complex criteria inside a doctrine 2 entity's repository?
答案 0 :(得分:0)
您可以使用“ matching()”一一应用条件:
$expr1 = Doctrine\Common\Collections\Criteria::expr();
$c1 = Doctrine\Common\Collections\Criteria::create();
$c1->where($expr->eq('fieldName', 'someValue'));
$company_total = $repository->matching($c1);
$expr2 = Doctrine\Common\Collections\Criteria::expr();
$c2 = Doctrine\Common\Collections\Criteria::create();
$c2->where($expr2->eq('fieldName2', 'someValue2'));
$company_total2 = $company_total->matching($c2);