Doctrine [语义错误] 错误:xxx 类没有名为 yyy 的字段或关联

Emi*_*mil 4 php doctrine entity-framework

您好,
最近几天我遇到了以下教义问题 - 由于我不允许粘贴任何源代码,我将尝试简要描述:

我正在使用学说 orm,我需要向 DB 中的现有表添加一个新列 - DB 和实体之间的映射是通过 xml 映射文件完成的 - 以下是我进行的步骤:

  1. 我已添加到实体文件中 - 让我们称其为 Entity.php - 该 newColumn 的新字段
  2. 我已将有关此 newColumn 的信息作为新的 XML 元素“字段”添加到 XML 映射文件中
  3. 我已经执行了学说命令来根据编辑的映射文件更改数据库的架构
  4. 我已经更新了 EntityRepository.php 文件中的查询以包含这个新列。

当我然后运行应用程序时,我仍然收到此错误:

 [Semantical Error] Error: Class Entity.php has no field or association named newColumn
Run Code Online (Sandbox Code Playgroud)

因此,如果我正确理解这一点,那就是说 Entity.php 中的字段 newColumn 应该是新的 DB 列映射到的字段。

但事实并非如此,因为这是我所做的第一步。

我已经试过了:

  1. 检查所有文件中 newColumn 的名称没有拼写错误
  2. 检查 Entity.php 中的字段是否具有适当的访问修饰符 - 即它不是私有的
  3. 缓存被清除,因为存储了一些错误版本的 Entity.php
  4. 我已经重新启动了运行应用程序的 apache 服务器

我仍然总是遇到同样的错误。

任何想法我可能会错过什么?谢谢!

小智 5

检查您的元数据缓存。如果您使用某些外部缓存机制(如 Memcached 或 xcache),它可能会在您的虚拟主机之间共享。如果一个 vhost 用它自己的映射元数据填充缓存(在 apache 重启之后),第二个 vhost 只使用它而不关心不同的 .dcm.xml 映射。

如果它是您的开发服务器/虚拟主机,通常最好完全禁用 ORM 缓存(config/autoload/database.local.php)。