adi*_*ii4 6 php mapping orm doctrine symfony
我一直在寻找解决我的问题.但我找不到任何解决方案.
我尝试打开主页时总是收到此错误消息:
未捕获的异常'Doctrine\Common\Persistence\Mapping\MappingException',消息'在'链配置的命名空间'中找不到类'Test\Bundle\UserBundle\Entity\User'...
奇怪的是,当我有以下网址时,我才会得到它:
但是当我在这个URL上运行它时,我没有收到任何错误,我的页面正确显示:
我的配置看起来像这样(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服务器上运行.
你们知道我弄错了吗?
映射名称是TestUserBundle路径Test\Bundle\User\Bundle,不应该命名TestBundleUserBundle吗?此外,通常mappings和auto_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进程(即,如果您已运行控制台服务器:运行)并再次尝试.如果不这样做,试试这个