Php 执行自定义mysql查询和;错误:路径表达式无效。必须是StateFieldPathExpression“;
我是Symfony的“新手”: 我正在尝试执行此sql:Php 执行自定义mysql查询和;错误:路径表达式无效。必须是StateFieldPathExpression“;,php,mysql,symfony,doctrine,Php,Mysql,Symfony,Doctrine,我是Symfony的“新手”: 我正在尝试执行此sql: SELECT cat.name, ri.category_id,AVG(ri.value) as avarage FROM company c JOIN reviews r ON r.company_id = c.id JOIN reviews_items ri ON ri.review_id = r.id JOIN category cat ON ri.category_id = cat.id WHERE c.id = 1 GROUP
SELECT cat.name, ri.category_id,AVG(ri.value) as avarage FROM company c
JOIN reviews r ON r.company_id = c.id
JOIN reviews_items ri ON ri.review_id = r.id
JOIN category cat ON ri.category_id = cat.id
WHERE c.id = 1
GROUP BY ri.category_id
在Symfony2原则中:
$cats = $this->getEntityManager()
->createQuery(
'SELECT cat.name, ri.category, AVG(ri.value),r as avarage
FROM DiligesDiligesBundle:Company c
JOIN c.reviews r
JOIN r.reviews ri
JOIN ri.category cat
WHERE c.id = 1
GROUP BY ri.category'
)->getResult();
但这给了我一个错误:
[语义错误]第0行,第20列靠近“类别,平均值(ri.value),r”:错误:无效的PathExpression。必须是StateFieldPathExpression
不知道为什么,有人能帮忙吗
编辑:
我已将所选项目更改为:
'SELECT c,r,ri,cat.name,AVG(ri.value) as avarage
我没有得到错误,但我得到了错误的项目(只有一个-它应该是其中的4个)。我只需要选择表的选定列,而不是全部
注:如果我的语言(英语)不太好,很抱歉:D我认为您的查询看起来不错,但是,您将无法调用
getResult()
,因为它不是您试图检索的实体
尝试改用
getArrayResult()
。不确定是否可以通过这种方式在查询生成器中直接强制转换自定义SQL
我使用的方法如下:
public Function myCustomQuery() {
$sql =
<<<EOF
MY_SQL_CODE_HERE
EOF
;
$myQuery = $this->getEntityManager()->getConnection()->prepare($sql);
$myQuery->execute();
$result = $myQuery->fetchAll();
return $result;
}
公共函数myCustomQuery(){
$sql=
准备($sql);
$myQuery->execute();
$result=$myQuery->fetchAll();
返回$result;
}
这可能是一个问题:
r as avarage
我不确定你想得到什么,但我想应该是
r
(表中的所有列)或r.column\u名称为avarage
,因为r
已经是表的别名了对不起,我的错了。它应该是:“cat.name,ri.category,AVG(ri.value)作为avarage,r”,但它仍然不会改变任何东西。