Doctrine orm 是否自动创建所有数据库表?

Doctrine orm 是否自动创建所有数据库表?,doctrine-orm,Doctrine Orm,是否有任何方法可以告诉您,我在不使用此命令的情况下自动创建架构表: doctrine:schema:update --force 我不确定您想做什么,但是如果您想从php代码中执行,您可以检查条令命令的工作方式并复制代码。你可以在这里找到它: vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/CreateDatabaseDoctrineCommand.php 如果您检查execute方法,您将看到它是如何完成的。显然,您需要通过

是否有任何方法可以告诉您,我在不使用此命令的情况下自动创建架构表:

doctrine:schema:update --force

我不确定您想做什么,但是如果您想从php代码中执行,您可以检查条令命令的工作方式并复制代码。你可以在这里找到它:

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

如果您检查execute方法,您将看到它是如何完成的。显然,您需要通过DBALDriverManager获得连接,这使您能够访问schema对象,而schema对象又具有createDatabase方法。我自己没有尝试过这一点。

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

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

您可以从php中发出命令。。。?我怎样才能确定该模式是在之前创建的还是没有创建的?我不相信有办法确定该模式是否已经创建。根据我的经验,在创建它之前,我只是简单地使用了
$schemaTool->dropSChema($classes)
。@Sina-Miandashti您也可以尝试一下<代码>尝试{//here create table code}catch(\Doctrine\ORM\Tools\ToolsException$exc){//table exists}