【问题标题】:PHP Symfony2 Error Mapping with an old bundlePHP Symfony2 错误映射与旧包
【发布时间】:2025-11-21 11:25:03
【问题描述】:

我正在学习 Symfony2,我使用 Doctrine2 作为 ORM。 一切都很顺利,除了一个错误。事实上,这个错误阻止了我,因为她发生在每个页面和 CLI 中。

错误如下:

ErrorException: Warning: class_parents(): Class BumpMe\UserBundle\Entity\User does not exist and could not be loaded in /home/gp2mv3/www/bumpme/vendor/doctrine/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php line 223

用户实体在 UserBundle 中,但我将它(文件)移动到另一个包(AppBundle)中。我重命名了文件和其中的命名空间。 之后我没有错误地删除了 UserBundle。

现在,在执行了很多 cli 命令之后,我已经完成了...

我该如何解决这个问题? 这个错误是从哪里来的?

谢谢。

【问题讨论】:

  • BumpMe\UserBundlein another bundle (AppBundle) ?!粘贴 User 类的 namespace 字符串及其确切的完整路径
  • BumpMe\AppBundle\Entity\User 我想,其实我只是复制了User.php的文件,我在这个文件中更改了命名空间。

标签: php namespaces symfony doctrine-orm


【解决方案1】:

我也遇到了这个错误。

当我将用户从 MainBundle 移动到它自己的 UserBundle(使用注释)时,我有一个旧的 /Resources/config/doctrine/User.orm.yml 文件潜伏着

【讨论】:

    【解决方案2】:

    我发现了错误! 我忘记了app/config/config.yml 中的一项声明。

    如果您遇到同样的错误,请重新阅读每个文件,您可能会发现旧的未编辑语句。

    # app/config/config.yml
    fos_user:
        db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
        firewall_name: main
        # Allows you to enter the new user entity
        user_class: MyApp\Bundle\UserBundle\Entity\User
        # Used to enter the new registration form
        registration:
            form:
                type: myapp_user_registrationform
    

    【讨论】:

    • 您错过的“一个声明”是什么?它是一个特定的吗?还是您的 config.yml 格式错误?
    • 这是对配置文件中旧包的声明。这不是一个具体的声明。
    • 酷,因为答案没有改变,我无法撤消我的反对票,你可能想编辑它以便我可以撤消它:)
    【解决方案3】:

    有点过时了,但我刚刚遇到同样的错误,所以检查了 config.yml(我正在根据“安装”进行编辑),最后一行:“Acme”用户负载,也许这有帮助某人:

    fos_user:
        db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
        firewall_name: main
        user_class: Acme\UserBundle\Entity\User
    

    【讨论】: