【发布时间】:2022-10-18 21:18:50
【问题描述】:
我正在使用 Symfony 4.4 和教义 2.0.8 我最近一直在重构我们的很多代码,其中一些涉及重命名某些类名。这一切都很好,直到我们部署到我们的生产环境,在那里我得到 MappingExceptions 因为它一直试图找到旧的类名。
例如。
命名空间App\Entity\PortalUser中的关系
已重命名/移至 App\Entity 并重命名为 PortalUserRelationship.php。
本地所有这些工作!
但是一旦我尝试bin/console cache:clear --env=prod,我就会收到以下错误:
The target-entity App\Entity\PortalUser\Relationship cannot be found in 'App\Entity\PortalUser#portalUserRelationships'.
当然这是有道理的,因为它在那个位置不再存在,但不知何故,教义仍在错误的地方寻找实体?
这是关系代码,只是为了证明它是正确的。
/**
* @ORM\OneToMany(targetEntity="App\Entity\PortalUserRelationship", mappedBy="portalUser", orphanRemoval=true)
*/
private Collection $portalUserRelationships;
因此,在某处某处无法清除生产缓存,我找不到如何清除此缓存的方法。
请注意 bin/console clear:cache --env=dev 有效,但 bin/console clear:cache --env=prod 失败。
我尝试了以下方法无济于事。
php bin/console doctrine:cache:clear-metadata
php bin/console doctrine:cache:clear-query
php bin/console doctrine:cache:clear-result
我也试过删除整个var/cache 文件夹,没有帮助。
我试过重启apache2服务器,不。
我在这里想念什么?
【问题讨论】:
-
PortalUser\Relationship某处你有额外的反斜杠。我可能会补充一点,这些错误的最常见来源是包含实体类的 php 文件名与类名本身不匹配,这通常是因为区分大小写,但也可能是因为正斜杠与反斜杠问题。在 Windows 下工作的东西可能在 Linux 下不工作。 -
我正在运行与服务器相同的环境。此外,这似乎只是一个教义问题,没有意识到某些事情已经改变。根据
bin/console doctrine:schema:validate映射正确
标签: php symfony caching doctrine-orm