我试图执行一个简单的查询,但我不明白我的错误在哪里。请帮帮我!
这在存储库类中:
public function searchFriends ($param)
{
return $this->getEntityManager()
->createQuery('SELECT f FROM EMMyFriendsBundle:Friend f WHERE f.name='.$param)
->getResult();
}
我就是这样称呼它的,从控制器的行动来看:
$em = $this->getDoctrine()->getEntityManager();
$result = $em->getRepository('EMMyFriendsBundle:Friend')
->searchFriends($search->getWords());
在这种情况下,我会得到以下错误:
[Semantical Error] line 0, col 54 near 'Maria': Error: 'Maria' is not defined.
500 Internal Server Error - QueryException
我试图以这样的方式将搜索到的值放在引号中:
public function searchFriends ($param)
{
return $this->getEntityManager()
->createQuery('SELECT f FROM EMMyFriendsBundle:Friend f WHERE f.name=" '.$param ' " ')
->getResult();
}
但后来我得到了
[Syntax Error] line 0, col 59: Error: Expected end of string, got ' " '
500 Internal Server Error - QueryException
你能告诉我如何正确地写这个查询吗?提前感谢!
编辑
我也试过这个:
public function searchFriends ($param)
{
$q = $this
->createQueryBuilder('f')
->where('f.name = :name')
->setParameter('name', $param)
->getQuery();
return $q->getResult();
}
在这方面:
$em = $this->getDoctrine()->getEntityManager();
$result = $em->getRepository('EMMyFriendsBundle:Friend')
->searchFriends($search->getWords());
而且还在工作
发布于 2012-09-11 10:10:30
虽然我不会使用这种方式将参数传递给查询(请检查这),但您的错误在于构建缺少点的字符串的方式。应该是这样的:
public function searchFriends ($param)
{
return $this->getEntityManager()
->createQuery('SELECT f FROM EMMyFriendsBundle:Friend f WHERE f.name="'.$param.'"')
->getResult();
}
发布于 2015-05-29 08:48:26
您需要使用文字表达式:
public function searchFriends($param)
{
$qb = $this->createQueryBuilder('f')
->where($qb->expr()->eq('f.name', $qb->expr()->literal($param)));
return $qb->getQuery()->getResult();
}
https://stackoverflow.com/questions/12367282
复制相似问题