【问题标题】:Building a query to search for multiple attributes构建查询以搜索多个属性
【发布时间】:2017-05-27 10:50:58
【问题描述】:

我对编码非常陌生,尤其是 Symfony。但是现在我的老师给了我一个任务来创建一个查询来搜索 2 个属性。我已经开始编写查询,但仍然缺少很多。我想知道是否有人可以提供帮助,或者发送一个链接来帮助我完成它。

我需要创建一个查找 Artikelnummer 和 Omschrijving 的搜索选项。

/**
* @Route("/artikel/zoek", name="zoekartikel")
*/
Public function zoek(Request $request){
   $em = $this->getDoctrine()->getManager();
   $query = $em->createQuery(
       'SELECT a
       FROM AppBundle:Artikel a
       WHERE a.artikelnummer = input AND a.omschrijving LIKE input2'
   );
   $artikelen = $query->getResult();
   return new Response($this->render('search.html.twig',
   array('artikelen' => $artikelen)));

}

【问题讨论】:

  • 如果inputinput2 只是字符串,则像这样使用WHERE a.artikelnummer = 'input' AND a.omschrijving LIKE 'input2',并将SELECT 之后的第一个a 替换为字符*
  • 我在此处定义字符串时遇到问题。所以它们还没有定义
  • 好的。首先尝试使用一些硬编码的字符串,这样您就可以查看查询是否正常工作,然后您可以相应地输入字符串。

标签: php sql symfony doctrine


【解决方案1】:

你需要先实例化结果映射

use Doctrine\ORM\Query\ResultSetMapping;

$rsm = new ResultSetMapping();

然后

$query = $em-> createNativeQuery(
       'SELECT a
       FROM AppBundle:Artikel a
       WHERE a.artikelnummer = ? AND a.omschrijving LIKE ?', 
       $rsm
   );

$query->setParameter(1, 'input1'); // or var
$query->setParameter(2, 'input2'); // or var
$artikelen = $query->getResult();
return new Response($this->render('search.html.twig',
   array('artikelen' => $artikelen)));

更多文档在这里http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html

【讨论】:

  • 为什么要使用 NativeQuery 和 ResultSetMapping 来完成这项任务,因为它可以使用 DQL 轻松完成(实际上,相同)而无需 ResultSetMapping?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2012-12-05
相关资源
最近更新 更多