如何使用ClassMetadataBuilder从Doctrine PHP映射生成实体



我正在尝试使用ClassMetadataBuilder配置实体,但似乎找不到使用从该类生成实体的方法

php vendor/bin/doctrine orm:generate-entities src

我的示例代码来自文档,看起来像:

class User {
private $id;
private $name;
public static function loadMetadata(ClassMetadata $metadata) {
$builder = new ClassMetadataBuilder($metadata);
$builder->createField('id', 'integer')->isPrimaryKey()->generatedValue()->build();
$builder->addField('name', 'string');
}
}

当我使用基于注释的配置时,我可以使用以下cli config.php生成实体:

$entitiesPath = array('src/Entity');
$isDevMode = $configuration->getValue('mode') === 'TEST';
$config = Setup::createAnnotationMetadataConfiguration($entitiesPath, $isDevMode);
$conn = $db->getConnectionDetails();
$entityManager = EntityManager::create($conn, $config);
return ConsoleRunner::createHelperSet($entityManager);

我应该在配置中使用什么元数据驱动程序而不是Setup::createAnnotationMetadataConfiguration?或者我做的PHP映射完全错了?

我最终跳过了命令行,在PHP代码中使用了EntityGenerator

//generator code
(new DoctrineORMToolsEntityGenerator())->
generate(array(MyMetadataLoader::loadMetadata()), "src/Entity");
//metadata loader
public static function loadMetadata() {
$metadata = new DoctrineORMMappingClassMetadata("Entity/User");
$builder = new ClassMetadataBuilder($metadata);
$builder->setTable('user');
$builder->createField('id', 'integer')->isPrimaryKey()->generatedValue()->build();
$builder->addField('name', 'string');
return $builder->getClassMetadata();
}

以及用于创建表

$em = MyEntityManagerLoader::loadEntityManager();
$tool = new DoctrineORMToolsSchemaTool($em);
$classes = array(
MyMetadataLoader::loadMetadata()
);
$tool->createSchema($classes);

最新更新