基本查询生成器 - Symfony 3

Basic QueryBuilder - Symfony3

我面临在我的一个存储库中执行查询生成器(或 SQL 请求)。 我搜索的每个示例都非常复杂,我想要一个基本 QueryBuilder

的基本解释

我有一个名为 RestaurantController 的控制器 我有一个 RestaurantRepository,我知道我应该在其中进行查询。

class RestaurantRepository extends \Doctrine\ORM\EntityRepository
{

}

我有一个名为 Restaurant.php 的实体,其中有 2 列(不包括 ID 一列)

所以基本上我想做一个查询,在那里我可以找到我的 city 然后能够在我看来使用它。我怎样才能做到这一点? :/

我直接在我的控制器中创建了一个:

$em = $this->getDoctrine()->getManager();
$restaurants = $em->getRepository('AppBundle:Restaurant')->findBy(array('city' => $request->request->get('city')));

但这不是很好用,所以我真的很想知道如何制作一个合适且简单的查询生成器。谢谢

当您说 'but this is not working' 时,您应该检查 $request->request->get('city') return 是一个有效的城市名称。在您的控制器中,您可以执行 return var_dump($request->request->get('city') 并验证您是否拥有预期的城市。在我看来,应该是$request->get('city')。所以基本上 :

$em = $this->getDoctrine()->getManager();
$currentCity = $request->request->get('city') 
return var_dump($currentCity)//make sur that you have a valid city
$restaurants = $em->getRepository('AppBundle:Restaurant')->findBy(array('city' => $currentCity));

您可以进行自定义查询,但这对您的需要来说太过分了

class RestaurantRepository extends EntityRepository
{
    public function getRestaurantByCity($city)
    {
        $query = $this->createQueryBuilder('r')
                        ->where('r.city = :city')
                        ->setParameter('city', $city)
                          ;

        return $query->getQuery()->getResult();
    }
}