我们正在使用Doctrine YAML文件来生成我们的实体。当我从../../vendor/bin/doctrine orm:generate-entities src
和bootstrap.php
所在的文件夹中运行cli-config.php
时,它似乎正确生成了PHP实体类:
../../vendor/bin/doctrine orm:generate-entities src
Generating Doctrine entities...
Processing entity "Entity\BucketGroup"
Processing entity "Entity\Cheat"
Processing entity "Entity\Content"
Processing entity "Entity\ContentGroup"
Processing entity "Entity\ContentType"
Processing entity "Entity\Developer"
Processing entity "Entity\ExternalIdentityProvider"
Processing entity "Entity\Game"
Processing entity "Entity\GameRelease"
Processing entity "Entity\Genre"
Processing entity "Entity\HighlightedContent"
Processing entity "Entity\Media"
Processing entity "Entity\MediaGroup"
Processing entity "Entity\Platform"
Processing entity "Entity\ProsAndCons"
Processing entity "Entity\Publisher"
Processing entity "Entity\Rating"
Processing entity "Entity\Region"
Processing entity "Entity\Site"
Processing entity "Entity\Tag"
Processing entity "Entity\User"
Processing entity "Entity\UserExternalIdentityProvider"
Processing entity "Entity\VideoAdvert"
接下来当我运行../../vendor/bin/doctrine orm:schema-tool:create
时,我得到以下PHP错误堆栈跟踪:
PHP Warning: class_parents(): Class Entity\BucketGroup does not exist and could not be loaded in /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php on line 40
PHP Stack trace:
PHP 1. {main}() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine:0
PHP 2. include() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine:4
PHP 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine.php:43
PHP 4. Symfony\Component\Console\Application->run() /vagrant/www/creo.api/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/ConsoleRunner.php:41
PHP 5. Symfony\Component\Console\Application->doRun() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:121
PHP 6. Symfony\Component\Console\Application->doRunCommand() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:191
PHP 7. Symfony\Component\Console\Command\Command->run() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:899
PHP 8. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:244
PHP 9. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() /vagrant/www/creo.api/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:47
PHP 10. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:112
PHP 11. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:205
PHP 12. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getParentClasses() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:281
PHP 13. Doctrine\Common\Persistence\Mapping\RuntimeReflectionService->getParentClasses() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:257
PHP 14. class_parents() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php:40
PHP Warning: array_reverse() expects parameter 1 to be array, boolean given in /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php on line 257
PHP Stack trace:
PHP 1. {main}() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine:0
PHP 2. include() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine:4
PHP 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine.php:43
PHP 4. Symfony\Component\Console\Application->run() /vagrant/www/creo.api/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/ConsoleRunner.php:41
PHP 5. Symfony\Component\Console\Application->doRun() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:121
PHP 6. Symfony\Component\Console\Application->doRunCommand() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:191
PHP 7. Symfony\Component\Console\Command\Command->run() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:899
PHP 8. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:244
PHP 9. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() /vagrant/www/creo.api/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:47
PHP 10. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:112
PHP 11. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:205
PHP 12. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getParentClasses() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:281
PHP 13. array_reverse() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:257
PHP Warning: Invalid argument supplied for foreach() in /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php on line 257
PHP Stack trace:
PHP 1. {main}() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine:0
PHP 2. include() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine:4
PHP 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /vagrant/www/creo.api/vendor/doctrine/orm/bin/doctrine.php:43
PHP 4. Symfony\Component\Console\Application->run() /vagrant/www/creo.api/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/ConsoleRunner.php:41
PHP 5. Symfony\Component\Console\Application->doRun() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:121
PHP 6. Symfony\Component\Console\Application->doRunCommand() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:191
PHP 7. Symfony\Component\Console\Command\Command->run() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Application.php:899
PHP 8. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /vagrant/www/creo.api/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:244
PHP 9. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() /vagrant/www/creo.api/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:47
PHP 10. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:112
PHP 11. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:205
PHP 12. Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getParentClasses() /vagrant/www/creo.api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:281
[ReflectionException]
Class Entity\BucketGroup does not exist
绝对可以正确创建BucketGroup PHP实体文件并正确命名空间。
供我参考bootstrap.php
文件:
<?php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
include '../../vendor/autoload.php';
$isDevMode = true;
$config = Setup::createYAMLMetadataConfiguration([__DIR__ . '/config/yaml'], $isDevMode);
// The included file is generated by db-generate-schema Chef recipe and include the DB connection parameters in an array called $conn
include ('dbgenerate.php');
$entityManager = EntityManager::create($conn, $config);
这是我的cli-config.php
文件:
<?php
include __DIR__ . '/bootstrap.php';
$entityManager->getConnection()
->getDatabasePlatform()
->registerDoctrineTypeMapping('enum', 'string');
$helperSet = new \Symfony\Component\Console\Helper\HelperSet([
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($entityManager->getConnection()),
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($entityManager)
]);
我正在使用通过Composer(2.3.4)加载的最新版本的Doctrine。
有人能指出我的问题吗?
谢谢
答案 0 :(得分:1)
您的作曲家设置似乎存在问题。将它添加到composer.json中的psr-0部分(在自动加载部分中):
"Entity\\": "src/"