Как генерировать сущности из сопоставления Doctrine PHP с использованием ClassMetadataBuilder - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь настроить сущности с 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 совершенно неправильно?

1 Ответ

0 голосов
/ 23 февраля 2020

Я пропустил командную строку и использовал EntityGenerator в своем коде PHP.

//generator code
(new \Doctrine\ORM\Tools\EntityGenerator())->
    generate(array(MyMetadataLoader::loadMetadata()), "src/Entity");

//metadata loader
public static function loadMetadata() {
    $metadata = new \Doctrine\ORM\Mapping\ClassMetadata("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 \Doctrine\ORM\Tools\SchemaTool($em);
$classes = array(
    MyMetadataLoader::loadMetadata()
);
$tool->createSchema($classes);
...