что не так с этим запросом доктрины?

У меня есть следующий запрос доктрины dql, я не вижу, чтобы он сильно отличался от ручного, но все же я получаю следующую ошибку:

Неустранимая ошибка: необработанное исключение «Doctrine\ORM\Query\QueryException» с сообщением «SELECT s FROM \SessionStorage s WHERE id= ?1 AND expireAt > NOW()»

$dql = "SELECT s FROM SessionStorage s WHERE id= ?1 AND expireAt > NOW()";
        $sessionstorage = $this->em->createQuery($dql)
            ->setParameter(1,$this->cookieManager->getCookie('session')->getValue())
            ->getResult();

Я попытался отделить createQuery от setparameter, но он не работает с creatQuery, но он не дает ни единой подсказки, что с ним не так. Согласно документации, это должно работать, это очень простой базовый код, и он работает, если я сделаю обычный запрос pdo.

Что я пробовал? я пробовал использовать \SessionStorage, Entities\Sessionstorage, src\SessionStorage.

Пробовал удалить expireAt > NOW()

Изменил переменную с ? в: идентификатор

Пробовал без s в SessionStorage s

Я гуглил, но все, что я нашел с этой ошибкой, было МНОГО сломанных веб-сайтов.

Поскольку документация по доктрине чертовски загромождена и неясна, насколько это может быть, не объясняя, что делает то, что я теряюсь, что не так с этим действительно очень простым запросом.

Может кто-нибудь просветить меня, что этот запрос делает неправильно? Я действительно не понимаю, почему такой простой запрос дает такую ​​​​ошибку.


person Tschallacka    schedule 24.10.2014    source источник
comment
Когда вы называете объект в DQL, это должно быть сделано с использованием абсолютного пространства имен объекта. Я запускаю приложение на ZF, которое загружает сущности из BT\Model\Entity\‹entityname›. Вы можете перепроверить это? Кроме того, я не уверен, что вы можете использовать NOW(), попробуйте использовать CURRENT_TIMESTAMP().   -  person fkupper    schedule 24.10.2014
comment
Я не использую пространства имен. Пока нет необходимости в таком уровне сложности. Это была действующая марка. Странно, что они не поддерживают сейчас ()   -  person Tschallacka    schedule 24.10.2014
comment
Кстати. Не могли бы вы опубликовать это в ответе, чтобы я мог принять его?   -  person Tschallacka    schedule 24.10.2014


Ответы (1)


Используйте CURRENT_TIMESTAMP() или CURRENT_DATE() вместо NOW().

person fkupper    schedule 24.10.2014