基本查询生成器 - 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();
}
}
我面临在我的一个存储库中执行查询生成器(或 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();
}
}