Symfony2 - 班级' X'在链配置的命名空间

时间:2015-08-19 13:30:22

标签: php symfony orm doctrine mapping

我一直在寻找解决问题的方法。但我无法找到任何解决方案。

当我尝试打开主页时,我总是收到此错误消息:

未捕获的异常' Doctrine \ Common \ Persistence \ Mapping \ MappingException'消息'类'测试\捆绑\用户捆绑\实体\用户'在链配置的命名空间中找不到'在...

奇怪的是,当我有以下网址时,我才会得到它:

http://localhost/

但是当我在此网址上运行时,我没有收到任何错误,而且我的网页显示正确:

http://localhost/app_dev.php

我的配置看起来像这样(config.yml):

# Doctrine Configuration
dbal:
  default_connection: default
  connections:
    default:
      driver:   "%database_driver%"
      host:     "%database_host%"
      port:     "%database_port%"
      dbname:   "%database_name%"
      user:     "%database_user%"
      password: "%database_password%"
      charset:  UTF8
    test:
      driver:   "%database_driver2%"
      host:     "%database_host2%"
      port:     "%database_port2%"
      dbname:   "%database_name2%"
      user:     "%database_user2%"
      password: "%database_password2%"
      charset:  UTF8
orm:
  default_entity_manager: default
  entity_managers:
    default:
      connection: default
      mappings:
        TestUserBundle:
          type: annotation

我在我的自定义服务中调用Doctrine:

public function __construct(EntityManager $em)
{
    $repositiory = $em->getRepository('Test\Bundle\UserBundle\Entity\User');
    $this->user = $repositiory->find($_SERVER['AUTH_USER']);
}

我的Symfony应用程序正在IIS Web服务器上运行。

你们知道我犯了什么错吗?

2 个答案:

答案 0 :(得分:5)

映射名称为nextafterf(denom, positive_infinity),但路径为TestUserBundle,不应将其命名为Test\Bundle\User\Bundle吗?此外,通常TestBundleUserBundlemappings在开发模式下设置为auto_generate_proxy_classes,这可能解释了为什么它在那里工作而不是在生产中。

您可能想要查看documentation(Symfony 2.7),它会根据您的情况显示您应该如何配置映射。

捆绑包中的自定义映射实体

true

在捆绑包外部映射实体

doctrine:
    # ...
    orm:
        # ...
        auto_mapping: true
        mappings:
            # ...
            AppBundle:
                type: xml
                dir: SomeResources/config/doctrine

最后但并非最不重要的是,在对doctrine: # ... orm: # ... mappings: # ... SomeEntityNamespace: type: annotation dir: "%kernel.root_dir%/../src/Entity" is_bundle: false prefix: App\Entity alias: App 目录中的config.yml或文件应用更改后,始终清除缓存目录。

如评论中所述: 您需要暂时停止可能正在使用prod目录的任何PHP进程(即,如果您已运行控制台服务器:运行)并再次尝试。如果不这样做,请尝试this

答案 1 :(得分:0)

事实证明,我的错误是我忘了在"供应商"中添加远程捆绑/捆绑在我的AppKernel文件中。

他们没有在" registerBundles"功能