我想用symfony控制器中的GET请求(在url中)发送的参数检索数据。 我有一个实体,看起来像这样:
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中获取数组并在学说中对其进行过滤?还是更好,有没有一个捆绑包可以最简单地为我做到?
先谢谢您!