目前,我根据请求使用下一个方法来重述数据:
/**
* @QueryParam(name="filters", nullable=true, map=true, description="Filter by fields. Must be an array ie. &filters[id]=3")
*/
public function cgetAction(ParamFetcherInterface $paramFetcher)
{
$filters = $paramFetcher->get('filters') ?: [];
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository($this->entityClassName())
->findBy($filters);
return $entities;
}
但是我需要这样的东西:在获取请求中指定复杂条件,例如
-
?filter={"where":{"or":[{"id":1},{"id":2},...,{"id":20"},{"id":21}]}}
-
?filter[where][date][gt]=2014-04-01T18:30:00.000Z
-
?filter={"where": {"keywords": {"inq": ["foo", "bar"]}}}
-
?filter[where][and][0][title]=My%20Post&filter[where][and][1][content]=Hello
- etc
并根据此请求从存储库中获取数据。
是否存在为此目的的Symfony捆绑包吗?任何建议都会很高兴。
使用lexikformfilterbundle,它是为此用例制作的,构建表单过滤器,然后从此表单过滤器中构建学说查询。
您会在这里找到一个完整的示例。