symfony 3.4过滤器GET参数

时间:2019-02-06 16:54:14

标签: php filter get doctrine symfony-3.4

我想用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中获取数组并在学说中对其进行过滤?还是更好,有没有一个捆绑包可以最简单地为我做到?

先谢谢您!

0 个答案:

没有答案