Я хотел бы получить данные с параметрами, отправленными запросом GET (в URL) в контроллере Symfony.У меня есть сущность, которая выглядит примерно так:
class User
{
/**
* string
*/
private $id;
/**
* string
*/
private $lastname;
/**
* string
*/
private $firstname;
/**
* array of object country
*/
private $country;
}
И контроллер, который выглядит примерно так:
public function getUsersAction(Request $request, ParamFetcher $paramFetcher)
{
$qb = $this->get('doctrine.orm.entity_manager')->createQueryBuilder();
$and = $qb->expr()->andx();
if ($lastname = $paramFetcher->get('lastname'))
$and->add($qb->expr()->eq('entity.lastname', $lastname));
// I Have every QueryParam set up in my code but useless here I think.
if ($firstname = $paramFetcher->get('firstname'))
$and->add($qb->expr()->eq('entity.firstname', $firstname));
if ($countries = $paramFetcher->get('countries'))
$and->add($qb->expr()->eq('country.id', $countries));
$qb->select('entity')->from($this->entity, 'entity');
if ($countries)
$qb->innerJoin('entity.countries','country');
if ($lastname|| $firstname|| $countries)
$qb->where($and);
return $qb->getQuery()->getResult();
}
Это уродливо, но работает.Тем не менее, есть одна проблема, если я хочу отправить много стран для фильтрации, я не могу.
Итак, вот мой запрос: как я могу получить массив из URL-адреса и отфильтровать их в доктрине?Или лучше, есть ли кто-нибудь, кто может сделать это для меня самым простым способом?
Заранее спасибо!