如何在Symfony2中执行类似的数据库查询
这应该很简单,但我找不到一个有效的例子。这里有一个控制器方法抛出错误“无效参数编号:绑定变量的数量与令牌的数量不匹配”。我已成功发布“searchterm”变量,但无法使查询正常工作。少了什么?谢谢如何在Symfony2中执行类似的数据库查询,symfony,doctrine-orm,doctrine,query-builder,dql,Symfony,Doctrine Orm,Doctrine,Query Builder,Dql,这应该很简单,但我找不到一个有效的例子。这里有一个控制器方法抛出错误“无效参数编号:绑定变量的数量与令牌的数量不匹配”。我已成功发布“searchterm”变量,但无法使查询正常工作。少了什么?谢谢 public function searchAction() { $request = $this->getRequest(); $searchterm = $request->get('searchterm'); $em = $this->getDo
public function searchAction()
{
$request = $this->getRequest();
$searchterm = $request->get('searchterm');
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery("SELECT n FROM AcmeNodeBundle:Node n WHERE n.title LIKE '% :searchterm %'")
->setParameter('searchterm', $searchterm);
$entities = $query->getResult();
return array('entities' => $entities);
}
可能是
AcmeNodeBundle\Node
?在DQLAcmeNodeBundle:Node
:Node
-命名参数中,应转储创建的查询,以便于调试
我只能建议您也尝试querybuilder:
$qb = $em->createQueryBuilder();
$result = $qb->select('n')->from('Acme\NodeBundle\Entity\Node', 'n')
->where( $qb->expr()->like('n.title', $qb->expr()->literal('%' . $searchterm . '%')) )
->getQuery()
->getResult();
我的Symfony2项目的工作示例:
$qb = $this->createQueryBuilder('u');
$qb->where(
$qb->expr()->like('u.username', ':user')
)
->setParameter('user','%Andre%')
->getQuery()
->getResult();
其中n.title类似“%:searchterm%” 应该是 其中n.title类似:searchterm
public function searchAction() {
$request = $this->getRequest();
$searchterm = $request->get('searchterm');
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery("SELECT n FROM AcmeNodeBundle:Node n WHERE n.title LIKE :searchterm")->setParameter('searchterm', $searchterm);
$entities = $query->getResult();
return array('entities' => $entities);
}
我认为这一选择也有助于:
$qb = $this->createQueryBuilder('u');
$qb->where('u.username like :user')
->setParameter('user','%hereIsYourName%')
->getQuery()
->getResult();