1

我有几个 url 查询,例如:

/page?type=train&category=others&location=germany

/page?type=car&category=others

我获取它们并将它们放入我想要过滤我的数据库请求的变量中。

这就是我尝试过的:

$item = $this->getDoctrine()
        ->getRepository('AppBundle:Item')
        ->findBy(array(
            'type' => $type,
            'category' => $category,
            'location' => $location
          ));

但是您可以想象,如果一个或多个变量为空,我将得不到任何结果...

我想从数据库中查询所有项目并按变量过滤它们,我该如何处理?

谢谢你的帮助!:)

4

1 回答 1

4

请记住,您不必在查询构建器中创建 findBy-Criteria。相反,您可以在之前使用 php's 创建它array_filter(),这将删除所有空值:

$criteria = array_filter(array(
  'type' => 'search_type',
  'category' => null,
  'location' => 'search_location'
));

$item = $this->getDoctrine()
    ->getRepository('AppBundle:Item')
    ->findBy($criteria);
于 2015-02-22T05:18:55.230 回答