Mysql 条令QueryBuilder:avg返回字符串值,而不是数字
我无法使用Mysql 条令QueryBuilder:avg返回字符串值,而不是数字,mysql,symfony,doctrine-orm,Mysql,Symfony,Doctrine Orm,我无法使用和having条件筛选结果,因为AVG函数返回字符串值 $qb = $this->getDoctrine()->getRepository('AppBundle:Service')->createQueryBuilder('s'); $qb->join('s.ratingList', 'r') ->addSelect('AVG(r.rating) as avg_rating') ->addGroupBy('s.service')
和having
条件筛选结果,因为AVG
函数返回字符串值
$qb = $this->getDoctrine()->getRepository('AppBundle:Service')->createQueryBuilder('s');
$qb->join('s.ratingList', 'r')
->addSelect('AVG(r.rating) as avg_rating')
->addGroupBy('s.service')
->andHaving('avg_rating >= :rating')
->setParameter('rating', $rating)
;
在结果中可以看到,
avg_rating
是字符串格式而不是数字,这就是过滤不起作用的原因。现在,我如何将avg_评级
设为整数?有不同的东西,它们在哪里。请看:我知道不同之处,但问题是参数没有设置。现在,更改where,看看该参数是否有效。这就是为什么我提到这些是不同的。如果我按照你的建议做,我有:列未找到:1054未知列“sclr_8”在“where子句”
(sclr_8-我猜是平均值)尝试->where('avg(r.rating)>=:rating')
有不同的东西和在哪里。请看:我知道不同之处,但问题是参数没有设置。现在,更改where,看看该参数是否有效。这就是为什么我提到这些是不同的。如果我按照你的建议做,我有:列未找到:1054未知列“sclr_8”在“where子句”
(sclr_8-我猜是平均等级)尝试->where('avg(r.rating)>=:rating')