Ошибка: ожидаемый литерал, получил «SELECT» - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь добавить метод в хранилище доктрин

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, возвращает ожидаемый результат, но используя доктрину, я получаю

Ошибка: ожидаемый литерал, получен «SELECT»

Я не могу понять, что не так.

1 Ответ

0 голосов
/ 03 мая 2018

$dql переменная недопустима DQL. Я не уверен, как сделать его действительным также.

Вы можете написать простой SQL и запустить

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

это оболочка над PDO, поэтому вы получите результат, как если бы вы выполняли простой запрос PDO.

...