Symfony2 - 在链配置的命名空间中找不到类"X"

adi*_*ii4 6 php mapping orm doctrine symfony

我一直在寻找解决我的问题.但我找不到任何解决方案.

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

未捕获的异常'Doctrine\Common\Persistence\Mapping\MappingException',消息'在'链配置的命名空间'中找不到类'Test\Bundle\UserBundle\Entity\User'...

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

HTTP://本地主机/

但是当我在这个URL上运行它时,我没有收到任何错误,我的页面正确显示:

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
Run Code Online (Sandbox Code Playgroud)

我在我的自定义服务中调用Doctrine,如下所示:

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

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

你们知道我弄错了吗?

tft*_*ftd 5

映射名称是TestUserBundle路径Test\Bundle\User\Bundle,不应该命名TestBundleUserBundle吗?此外,通常mappingsauto_generate_proxy_classes设置为true开发模式,这可能解释了为什么它在那里工作而不是在生产中.

您可能需要查看文档(Symfony 2.7),该文档根据您的具体情况显示您应该如何配置映射.

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

doctrine:
    # ...
    orm:
        # ...
        auto_mapping: true
        mappings:
            # ...
            AppBundle:
                type: xml
                dir: SomeResources/config/doctrine
Run Code Online (Sandbox Code Playgroud)

映射捆绑包外的实体

doctrine:
    # ...
    orm:
        # ...
        mappings:
            # ...
            SomeEntityNamespace:
                type: annotation
                dir: "%kernel.root_dir%/../src/Entity"
                is_bundle: false
                prefix: App\Entity
                alias: App
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是,config.yml在对app/config/目录中的文件或文件应用更改后,始终清除缓存目录.

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