如何在 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 数据库查询的主要内容,如果未能解决你的问题,请参考以下文章