2016-11-23 7 views
1

В настоящее время я использую следующий подход для retreiving данных по запросу:Как сгенерировать SQL из запроса?

/** 
* @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; 
} 

Но мне нужно something like this: задать сложные условия в запросе GET, например

  • ?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
  • и т.д.

и получать данные из хранилища в соответствии с этим запросом.

Существует ли какой-либо комплект для Symfony для этой цели? Будем рады любому совету.

+0

Вы понимаете, что это относится только к монгодбам? –

+1

не похож, но нашел это интересное https://api-platform.com/docs/core/filters (да, его основано на Symfony) – Vamsi

+0

@Alex Blex, я использую только PostgreSQL. – mnv

ответ

1

Используйте LexikFormFilterBundle, он сделан для этого прецедента, формы формы здания, а затем построит запрос доктрины из этого фильтра формы.

Вы найдете a complete example here.

+0

Спасибо! Я попробую позже – mnv

+0

@mnv это сработало для ваших нужд? – Veve

+0

У меня не было времени попробовать. Я попробую на этой неделе – mnv

Смежные вопросы