0

我们使用 Doctrine YAML 文件来生成我们的实体。当我../../vendor/bin/doctrine orm:generate-entities src从我的文件夹运行时bootstrap.phpcli-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。

谁能指出我出了什么问题的方向?

谢谢

4

1 回答 1

1

您的作曲家设置似乎有问题。将此添加到 composer.json 中的 psr-0 部分(在 autoload 部分中):

"Entity\\": "src/"
于 2013-07-03T12:11:54.613 回答