Doctrine会自动创建所有数据库表吗?

时间:2012-05-20 15:33:51

标签: doctrine-orm

有没有办法告诉doctrine自动创建模式表而不使用此命令:

doctrine:schema:update --force

2 个答案:

答案 0 :(得分:23)

使用SchemaTool和EntityManager可以执行以下操作:

$schemaTool = new \Doctrine\ORM\Tools\SchemaTool($entityManager);
$classes = $entityManager->getMetadataFactory()->getAllMetadata();
$schemaTool->createSchema($classes);

答案 1 :(得分:4)

我不确定你想做什么,但是如果你想从php代码中做到这一点,你可以检查doctrine命令的工作原理并复制代码。你可以在这里找到它:

vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/CreateDatabaseDoctrineCommand.php

如果检查执行方法,您将看到它是如何完成的。显然,您需要通过DBAL DriverManager获得连接,这样您就可以访问模式对象,而模式对象又具有createDatabase方法。我自己没试过。