2012-05-20 49 views

回答

18

使用SchemaTool和EntityManager的,你可以這樣做:

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

我如何確定模式是否在創建之前? –

+0

我不相信有一種方法可以查看架構是否已經創建。根據我的經驗,在創建它之前,我只是使用了'$ schemaTool-> dropSChema($ classes)'。 – trevorengstrom

+1

@Sina Miandashti你也可以試試看。 (\ Doctrine \ ORM \ Tools \ ToolsException $ exc){//表存在} {//這裏創建表代碼} – Hokusai

4

我不知道你想做的事,但如果你想從PHP代碼做到這一點,你可以檢查教條命令如何工作並複製代碼。你可以在這裏找到它:

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

如果你檢查execute方法,你會看到它是如何完成的。顯然,您需要通過DBAL DriverManager獲得連接,該連接允許您訪問模式對象,該模式對象又具有createDatabase方法。我沒有自己嘗試過。

相關問題