如何在 Symfony2 中使用 LIKE 数据库查询

Posted

技术标签:

【中文标题】如何在 Symfony2 中使用 LIKE 数据库查询【英文标题】:How to use a LIKE database query in Symfony2 【发布时间】:2016-12-02 23:36:08 【问题描述】:

请问我需要知道什么问题,它应该可以工作,但它没有得到结果。

有我的控制器:

    public function searchAction()

    $form = $this->createForm(new SearchCoursesType());
    $request = $this->getRequest();
    if($request->getMethod() == 'POST')
    
        $form->bind($request);
        if($form->isValid())
        
            $em = $this->getDoctrine()->getManager();
            $data = $this->getRequest()->request->get('formation_appbundle_scourse');
            $courses = $em->getRepository('FormationAppBundle:Course')->findCoursesByParametres($data);
            return $this->render('FormationAppBundle:Courses:coursesList.html.twig', array('courses' => $courses));
        
    
    return $this->render('FormationAppBundle:Template:searchIndex.html.twig', array('form' => $form->createView()));

我在 Repository 中定义了这样的搜索功能

 public function findCoursesByParametres($data)



    $query = $this->createQueryBuilder('a');

    $query->where($query->expr()->like('a.title', ':title'))

        ->setParameters(array(

            'title' => $data['title']
        ));
    return $query->getQuery()->getResult();


使用简单的表格

 form_start(form) 
     form_widget(form) 
<input type="submit" value="Create" />
 form_end(form) 

我认为它没有收集输入但我找不到问题

【问题讨论】:

$data = $form->getData();应该得到你的头衔。但是如果没有 % 字符,使用 LIKE 没有多大意义。 【参考方案1】:

更改您的函数存储库:

 public function findCoursesByParametres($data)
 
     $query = $this->createQueryBuilder('a')
              ->where('a.title LIKE :title')
              ->setParameters(array(
                  'title' => '%' . $data['title'] . '%'
              ));
     return $query->getQuery()->getResult();
  

【讨论】:

以上是关于如何在 Symfony2 中使用 LIKE 数据库查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony2 中保存视图中的数据

Symfony2.8。如何从发布请求中获取数据

如何在 symfony2 中从数据库中渲染 Twig 模板

如何在 Symfony2 控制器中获取用户 IP 地址?

如何在 symfony2 控制器中发送 JSON 响应

如何在 symfony2 中持久化之前设置列值?