Php 可以使用一个或多个值进行搜索的搜索函数

Php 可以使用一个或多个值进行搜索的搜索函数,php,mysql,symfony,Php,Mysql,Symfony,我正在尝试创建一个搜索功能。但是我在如何做这件事上有困难。我是symfony2的新手,只是自学和阅读一些教程 我在DefaultController中有一个搜索函数 public function searchAction(){ $request = $this->getRequest(); $data = $request->request->get('search'); $data1 = $request->request->get('search1'

我正在尝试创建一个搜索功能。但是我在如何做这件事上有困难。我是symfony2的新手,只是自学和阅读一些教程

我在DefaultController中有一个搜索函数

public function searchAction(){     
$request = $this->getRequest();
$data = $request->request->get('search');
$data1 = $request->request->get('search1');
$data2 = $request->request->get('search2');

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
 'SELECT p 
 FROM FooTransBundle:Transaction p, FooTransBundle:Supplier d
 WHERE p.transType LIKE :data
 AND d.name LIKE :data1
 AND p.sendDate LIKE :data2')
->setParameter('data',$data)
->setParameter('data1',$data1)
->setParameter('data2',$data2);  

$res = $query->getResult();

return $this->render('FooTransBundle:Default:search.html.twig', array(
'res' => $res));
}
在我的小树枝上我有一个search.html.twig

   <form class="form-horizontal"role="form"name ="search"method="post" action="{{path('foo_trans_search') }}">
  <div class="form-group">
    <label for="agr"class="col-sm-2 control-label">Trans Type</label>
      <div class="col-sm-10">
          <input type="text"class="form-control"id="agr"placeholder="Trans type" name ="search">
  </div>
  </div>
  <div class="form-group">
    <label for="trad"class="col-sm-2 control-label">Name:</label>
      <div class="col-sm-10">
        <input type="text"class="form-control"id="trad"placeholder="Name" name ="search1">
      </div>
  </div>
  <div class="form-group">
    <label for="send"class="col-sm-2 control-label">Send Date:</label>
      <div class="col-sm-10">
        <input type="text"class="form-control"id="send"placeholder="YYYY-MM-DD"name ="search2">
      </div>
  </div>
  <div class="form-group">
      <div class="col-sm-offset-2 col-sm-10">
          <button type="submit"class="btn btn-primary">Submit</button>
  </div>
 </div>
  </form>

反式
姓名:
发送日期:
提交
我想要的是通过填写三个输入字段、两个输入字段甚至三个输入字段中的一个来搜索数据库中的数据。但它仍然会返回搜索到的数据


请帮帮我。谢谢。

通过两个步骤,您的应用程序应该可以工作:

第一:得到回复

 $res =  $query->getQuery()->getResult();
第二:浏览视图中的res

{%for result in res %}

   {{ result.name }}

{%endfor%}

使用symfony表单可以做得更好。

我已经可以做了。但我的问题是,我如何能够在不填写所有输入字段的情况下进行搜索。例如,我将只填写Trans-type的输入字段,其他两个字段我将留空,但我的搜索功能仍将尝试根据我填写的字段查找内容。谢谢。@user3793105请尝试使用%
setParameter('data','%.$data。“%”)当您的输入为空时,如果%%,则过滤器为全选。是的,工作正常,但我有另一个问题。在放入任何内容之前,它将显示我数据库中的所有数据。->setParameter('data'、'%'.$data。“%”)->setParameter('data1'、'%'.$data1。“%”)->setParameter('data2'、'%'.$data2。“%”);当我在控制器中执行这些操作时。