首页 > 解决方案 > 错误:预期文字,得到“选择”

问题描述

我正在尝试将方法添加到学说存储库

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 上执行此查询会返回预期结果,但使用我得到的学说

错误:预期文字,得到“选择”

我不知道出了什么问题。

标签: doctrine-ormdqlsymfony4

解决方案


$dql变量不是有效的 DQL。我不知道如何使它也有效。

您可以编写简单的 SQL 并运行

$this->getEntityManager()->getConnection()->executeQuery($query, $params)

它是 PDO 的包装器,因此您将获得类似于执行简单 PDO 查询的结果。


推荐阅读