У меня в моем 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)
Когда я запускаю файл для генерации в db схемы с этим инструкцией:
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
Не понимаю, почему это происходит, любая идея? благодаря
IIRC, SchemaTool будет генерировать SQL на основе экземпляров ClassMetadata, а не непосредственно из ваших сопоставлений YAML. Для экземпляров ClassMetadata требуются и ваши фактические классы сущностей
Убедитесь, что в вашем инструменте командной строки загружены все загруженные / автоматически загруженные классы сущностей.
Я столкнулся с такой же проблемой. Трюк состоит в том, чтобы сгенерировать сущности из файлов yaml с параметрами -generate-annotations, установленными в 1. Я скопировал приведенную ниже команду:
$ doctrine orm:generate-entities --generate-annotations=1 Entities/
Это делает то, что он генерирует сущности вместе со всей информацией о сопоставлении. Теперь, если вы измените конфигурацию драйвера метаданных в своем бутстрапе, чтобы использовать объекты, а не файлы yaml, создание схемы должно работать.
EDIT 2017-05-31 Пересмотр этого через некоторое время. Это похоже на случай, когда Doctrine не может найти ваш «клиент класса» из-за проблем с автозагрузкой. Вы можете исправить это, включив в свой файл cli-config.php путь к сценарию загрузочного файла / автозагрузчика.