本文介绍了当我尝试进行 YAML 映射时出现 Doctrine 2.0 ReflectionException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 cli-config.php 中有这段代码:

I have in my cli-config.php this code:

 $driverImpl = new DoctrineORMMappingDriverYamlDriver(array(__DIR__.'/yaml'));
 $driverImpl->setFileExtension('.yml');
 $config->setMetadataDriverImpl($driverImpl);

./yaml 中有 yml 文件 (Client.yml,Worker.yml,Company.yml)

In ./yaml there are the yml files (Client.yml,Worker.yml,Company.yml)

当我运行文件以在数据库中生成带有此指令的架构时:

When i run the file to generate in db the schema with this instruccion:

php doctrine orm:schema-tool:create

抛出:

PHP Warning:  class_parents(): Class Client does not exist and could not be loaded in applicationPathsystemapplicationlibrariesDoctrineORMMappingClassMetadataFactory.php on line 222

Warning: class_parents(): Class Cliente does not exist and could not be loaded in applicationPath\systemapplicationlibrariesDoctrineORMMappingClassMetadataFactory.php on line 222
PHP Warning:  array_reverse() expects parameter 1 to be array, boolean given in applicationPath\systemapplicationlibrariesDoctrineORMMappingClassMetadataFactory.php on line 222

Warning: array_reverse() expects parameter 1 to be array, boolean given in applicationPath\systemapplicationlibrariesDoctrineORMMappingClassMetadataFactory.php on line 222
PHP Warning:  Invalid argument supplied for foreach() in applicationPath\systemapplicationlibrariesDoctrineORMMappingClassMetadataFactory.php on line 222

Warning: Invalid argument supplied for foreach() in applicationPath\systemapplicationlibrariesDoctrineORMMappingClassMetadataFactory.php on line 222



  [ReflectionException]
  Class Client does not exist

它与 Doctrine 文档相同 http://www.doctrine-project.org/docs/orm/2.0/en/reference/yaml-mapping.html

It´s the same that Doctrine documentation http://www.doctrine-project.org/docs/orm/2.0/en/reference/yaml-mapping.html

我不知道为什么会发生这种情况,知道吗?谢谢

I don´t why it´s happening this, any idea?Thanks

推荐答案

IIRC,SchemaTool 将基于 ClassMetadata 实例生成 SQL,而不是直接从您的 YAML 映射中生成.ClassMetadata 实例也需要您的实际实体类

IIRC, the SchemaTool will generate the SQL based on ClassMetadata instances, not directly from your YAML mappings. ClassMetadata instances require your actual entity classes as well

确保您的命令行工具已加载/自动加载所有实体类.

Make sure your command line tool has all your entity classes loaded/autoloaded.

这篇关于当我尝试进行 YAML 映射时出现 Doctrine 2.0 ReflectionException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 09:59