symfony Map异常:重命名类后找不到target-entity,生产环境中的缓存问题

cqoc49vn  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(83)

我使用的是Symfony 4.4和doctrine 2.0.8。我最近重构了很多代码,其中一些涉及到重命名某些类名。这一切都工作得很好,直到我们部署到生产环境,在那里我得到了MappingException,因为它一直试图找到旧的类名。
例如:
命名空间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文件夹,没有帮助。
我试过重新启动apache 2服务器,没有。
我错过了什么?

xdnvmnnf

xdnvmnnf1#

我真的没有找到解决办法。
bin/console doctrine:mapping:info --env=dev在所有字段上显示[OK],bin/console doctrine:mapping:info --env=prod在我重命名的字段上显示2个Map错误。
我有一种感觉, composer autoload是使用错误的/过时的文件来寻找文件。
我已经运行了composer dump-autoload但没有用。我已经grep艾德我的整个系统来寻找Map错误中使用的字符串,但是找不到。
我已经清除了所有的doctrine/symfony/composer缓存,没有任何变化。我已经重新启动了apache 2/php-fpm,没有任何变化。
唯一修复它的是将我的字段名称更改为$portalUserRelationships以外的任何名称,eidogg. $portalUsersRelationships工作正常。
我仍然100%肯定这只是系统在一个过时的文件中寻找Map时搞砸了,但我不太清楚它是从哪里获得数据的。
无论如何,对于任何有类似问题的人,尝试重命名你的字段,并希望上帝它的工作。

pprl5pva

pprl5pva2#

将以下内容添加到失败环境的doctrine.yml中解决了该问题。

doctrine:
    orm:
        auto_generate_proxy_classes: true

相关问题