使用用户输入symfony2框架查询数据库

时间:2015-09-25 01:19:23

标签: php forms symfony

我目前正在使用Symfony2 MVC框架上的表单。我有一个控制器,在HTML页面中呈现一个表单。该表单允许用户将他们选择的电影的信息提交到数据库。

 /**
     * @Route("/practise", name="practise")
     * @Template()
     */
    public function practiseAction(Request $request)
    {
            $movie = new movie();
            $form = $this->createForm(new MovieType(),$movie);

            $form->handleRequest($request);

            if($form->isValid())
            {
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($movie);
                $em->flush();

                return $this->redirectToRoute("success");

            }else{

                return $this->render('default/practise.html.twig', array(
                    'form' => $form->createView(),
                ));
            }
    }

我现在要做的是构建一个搜索字段,使用户可以在我的网站上搜索电影。如何将用户输入搜索字段并查询数据库以查看该电影是否在数据库中。让另一个控制器单独处理这个动作是否更好。

如果有人在此之前已经这样做了,我会非常感谢任何提示。感谢。

1 个答案:

答案 0 :(得分:0)

您可以在当前控制器中实现搜索功能。

快速查看the docs会让您走上正轨。

基本上你将用户输入作为参数传递:

public function searchAction($userInput){
    //Your logic here
}

然后,正如文档中所示,您可以制定查询:

public function searchAction($userInput){
    $em = $this->getDoctrine()->getManager();
    $query = $em->createQuery(
        'SELECT m
         FROM AppBundle:Movie m
         WHERE m.title > :title'
    )->setParameter('title', $userInput);

    $movie = $query->getResult();

    //You render your view
}

虽然有更多最佳方法可以达到相同的效果,所以我建议您仔细阅读文档。