我有一些像这样的 Doctrine ORM 代码:
$query = $this->entityManager->createQuery('SELECT c FROM specialty\models\entities\Clan c WHERE c.Id = ?1');
这段代码多年来一直没有问题。我最近重新安装了我的 LAMP 堆栈环境和我的 Netbeans IDE,只是从 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\entities”,但它被“视为”为“\modelsentities”——它肯定不存在——因此出现错误。
出于某种奇怪的原因,我认为在解析代码之前将斜杠去掉。问题是,我一直无法找到造成这种情况的原因。我观察到,当从语句中删除 WHEN 子句时,问题就消失了,如下所示:
$query = $this->entityManager->createQuery('SELECT c FROM specialty\models\entities\Clan c');
我尝试转义可能不可见的控制字符,检查 php.ini 中的新环境设置(例如)以寻找可能导致错误的线索。请帮忙,谢谢。