Error: Expected Literal, got 'SELECT'
Error: Expected Literal, got 'SELECT'
我正在尝试向学说存储库添加方法
public function getOpenedImport(Uftts $fattura){
$dql = "SELECT F.importoFattura*C.segnoNumerico - (SELECT SUM(I.importo*C2.segnoNumerico)
FROM MyAppDomain:Incas I
INNER JOIN MyAppDomain:Cjcau AS C2 ON C2.codice = I.causale
WHERE I.annoDocumento = F.annoDocumento AND I.numeroDocumento = F.numeroDocument)
FROM MyAppDomain:Uftts F
INNER JOIN MyAppDomain:Cjcau C ON C.codice = F.causale
WHERE F.annoDocumento = :annoDocumento AND F.numeroDocumento = :numeroDocumento";
$query = $this->getEntityManager()->createQuery($dql);
$query->setParameters(['annoDocumento' => $fattura->getAnnoDocumento(),
'numeroDocumento' => $fattura->getNumeroDocumento()]);
return $query->getSingleScalarResult();
}
如果在我的 Sql Server 2008 上执行此查询 returns 预期结果,但使用学说我得到
Error: Expected Literal, got 'SELECT'
我找不到问题所在。
$dql
变量不是有效的 DQL。我也不确定如何使它有效。
你可以写普通的 SQL 和 运行
$this->getEntityManager()->getConnection()->executeQuery($query, $params)
它是 PDO 的包装器,因此您将获得类似于执行简单 PDO 查询的结果。
我正在尝试向学说存储库添加方法
public function getOpenedImport(Uftts $fattura){
$dql = "SELECT F.importoFattura*C.segnoNumerico - (SELECT SUM(I.importo*C2.segnoNumerico)
FROM MyAppDomain:Incas I
INNER JOIN MyAppDomain:Cjcau AS C2 ON C2.codice = I.causale
WHERE I.annoDocumento = F.annoDocumento AND I.numeroDocumento = F.numeroDocument)
FROM MyAppDomain:Uftts F
INNER JOIN MyAppDomain:Cjcau C ON C.codice = F.causale
WHERE F.annoDocumento = :annoDocumento AND F.numeroDocumento = :numeroDocumento";
$query = $this->getEntityManager()->createQuery($dql);
$query->setParameters(['annoDocumento' => $fattura->getAnnoDocumento(),
'numeroDocumento' => $fattura->getNumeroDocumento()]);
return $query->getSingleScalarResult();
}
如果在我的 Sql Server 2008 上执行此查询 returns 预期结果,但使用学说我得到
Error: Expected Literal, got 'SELECT'
我找不到问题所在。
$dql
变量不是有效的 DQL。我也不确定如何使它有效。
你可以写普通的 SQL 和 运行
$this->getEntityManager()->getConnection()->executeQuery($query, $params)
它是 PDO 的包装器,因此您将获得类似于执行简单 PDO 查询的结果。