计算符合标准的记录

时间:2016-05-04 08:54:51

标签: mysql sql doctrine-orm symfony

我正在尝试计算列字段包含某个字符串的记录。

这是我的疑问:

    $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,得到'''

任何帮助都将不胜感激!!

2 个答案:

答案 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();