Doctrine 2.0 ReflectionException, когда я пытаюсь сделать YAML Mapping - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть в моем cli-config.php этот код:

 $driverImpl = new \Doctrine\ORM\Mapping\Driver\YamlDriver(array(__DIR__.'/yaml'));
 $driverImpl->setFileExtension('.yml');
 $config->setMetadataDriverImpl($driverImpl);

В ./yaml есть файлы yml (Client.yml, Worker.yml, Company.yml)

Когда я запускаю файл для создания в БД схемы с этой инструкцией:

php doctrine orm:schema-tool:create

броски:

PHP Warning:  class_parents(): Class Client does not exist and could not be loaded in applicationPath\system\application\libraries\Doctrine\ORM\Mapping\ClassMetadataFactory.php on line 222

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

Warning: array_reverse() expects parameter 1 to be array, boolean given in applicationPath\\system\application\libraries\Doctrine\ORM\Mapping\ClassMetadataFactory.php on line 222
PHP Warning:  Invalid argument supplied for foreach() in applicationPath\\system\application\libraries\Doctrine\ORM\Mapping\ClassMetadataFactory.php on line 222

Warning: Invalid argument supplied for foreach() in applicationPath\\system\application\libraries\Doctrine\ORM\Mapping\ClassMetadataFactory.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

Не понимаю, почему так происходит, понимаешь? Спасибо

Ответы [ 2 ]

0 голосов
/ 27 августа 2011

Я столкнулся с той же проблемой.Хитрость заключается в том, чтобы сгенерировать сущности из файлов yaml с опциями --generate-annotations, установленными в 1. Я скопировал команду, которую использовал ниже:

$ doctrine orm:generate-entities --generate-annotations=1 Entities/

То, что это делает, это генерирует сущностивместе со всей картографической информацией.Теперь, если вы измените конфигурацию драйвера метаданных в своей начальной загрузке, чтобы использовать Entities вместо файлов yaml, создание схемы должно работать.

РЕДАКТИРОВАТЬ 2017-05-31 Пересмотреть это через некоторое время.Это похоже на случай, когда Doctrine не удалось найти ваш «Class Client» из-за проблем с автозагрузкой.Вы можете исправить это, включив путь к файлу загрузочного скрипта / скрипту автозагрузчика в файл cli-config.php.

0 голосов
/ 03 февраля 2011

IIRC, SchemaTool будет генерировать SQL на основе экземпляров ClassMetadata, а не непосредственно из ваших сопоставлений YAML. Экземпляры ClassMetadata также требуют ваших реальных классов сущностей

Убедитесь, что в инструменте командной строки загружены / загружены все классы сущностей.

...