Имя сущности доктрины в пространстве имен неверно истолковывается при разборе - PullRequest
0 голосов
/ 27 марта 2012

У меня есть немного кода Doctrine ORM, например, так:

$query = $this->entityManager->createQuery('SELECT c FROM specialty\models\entities\Clan c WHERE c.Id = ?1');

Этот код работал без проблем целую вечность.Недавно я переустановил среду стека LAMP и среду IDE Netbeans и просто извлек код из SVN.Теперь, однако, этот бит кода выдает следующую ошибку:

exception 'Doctrine\ORM\Query\QueryException' with message '[Semantical Error] line 0, col 14 near 'specialty\modelsentities\Clan': Error: Class 'specialty\modelsentities\Clan' is not defined here.'

Глядя на сообщение об ошибке, отсутствует «\» между «моделями» и «сущностями».Хотя это должны быть «\ models \ entity», это «рассматривается» как «modelsentities», который определенно не существует - отсюда и ошибка.

По какой-то странной причине косая черта удаляется перед анализом кода, я думаю.Проблема в том, что я не смог найти причину этого.Я заметил, что проблема исчезает, когда предложение WHEN удаляется из оператора следующим образом:

$query = $this->entityManager->createQuery('SELECT c FROM specialty\models\entities\Clan c');

Я пытался экранировать возможно невидимые управляющие символы, проверяя новые настройки среды в php.ini (например) на наличие подсказок.относительно того, что могло быть причиной ошибки.Пожалуйста, помогите, спасибо.

Ответы [ 2 ]

0 голосов
/ 31 марта 2012

Проблема заключалась в том, что я установил версию 5.4 PHP во время переустановки.Согласно веб-сайту PHP, новый управляющий / escape-символ был введен в версии 5.4

\e  escape (ESC or 0x1B (27) in ASCII) (since PHP 5.4.0)

Очевидно, что метод createQuery () в классе entitymanager в Doctrine 2.0 не избегает этого хорошо, когда сталкивается с:

blah\models\entities\blah [содержит новый управляющий символ]

Предыдущая версия, которая была у меня, была версия 5.3.10, в которой не было введенного нового управляющего символа.

Решение быловернуться к PHP 5.3.Не уверен, что обновление до Doctrine 2.1 или новее решит и эту проблему.

0 голосов
/ 29 марта 2012

У вас включена автоматическая генерация прокси?Если это так, попробуйте отключить его и вручную восстановить прокси.

Если у вас уже отключено автоматическое создание прокси, просто попробуйте восстановить прокси и посмотрите, поможет ли это.

...