我正在尝试计算列字段包含某个字符串的记录。
这是我的疑问:
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQueryBuilder()
->select("count(e.$column)")
->from("AppBundle:$table", "e")
->where("e.urlid LIKE \"-test\"")
->getQuery();
$occurences = $query->getSingleScalarResult();
当我在mysql上运行手动查询时,它有效,所以它可能是一个学说。我从教义中得到了这个错误:
[语法错误]第0行,第66行:错误:预期的StateFieldPathExpression |字符串| InputParameter | FunctionsReturningStrings | AggregateExpression,得到'''
任何帮助都将不胜感激!!
答案 0 :(得分:0)
尝试用这样的方法来设置类似的表达式:
$qb->andWhere($qb->expr()->like('user.name', $qb->expr()->literal('%'.$name.'%')));
在你的情况下试试这个:
$key = '-test';
$em = $this->getDoctrine()->getEntityManager();
$qb = $em->createQueryBuilder();
$query = $qb
->select("count(e.$column)")
->from("AppBundle:$table", "e");
$qb->andWhere($qb->expr()->like('e.urlid', $qb->expr()->literal('%'.$key.'%')));
$occurences = $qb->getQuery()->getSingleScalarResult();
希望这个帮助
答案 1 :(得分:0)
我最终设法解决了这个问题:
$query = $this->em->createQueryBuilder()
->select("count(e.$column)")
->from("AppBundle:$table", "e")
->where("e.$column LIKE :url")
->setParameter("url", $url."%")
->getQuery();
$occurences = $query->getSingleScalarResult();