2012-05-20 12 views

答えて

18

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

前にスキーマが作成されていると判断する方法はありますか? –

+0

スキーマが作成されているかどうかを確認する方法はないと思います。私の経験では、作成する前に '$ schemaTool-> dropSChema($ classes)'を使用しました。 – trevorengstrom

+1

@Sina Miandashtiでも試してみることができます。 'try {//ここにテーブルコードを作成する} catch(\ Doctrine \ ORM \ Tools \ Tools \ $ exc){// Table exists}' – Hokusai

4

私はあなたが何をしたいのかわからないんだけど、あなたはPHPコードからそれを実行したい場合は、あなたがチェックすることができますどのようにdoctrineコマンドが動作し、コードをコピーするか。

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

実行方法を確認すると、どのように処理されているかがわかります。明らかに、DBAL DriverManagerを介して接続する必要があります。これにより、スキーマ・オブジェクトにアクセスできます。スキーマ・オブジェクトには、createDatabaseメソッドがあります。私はこれを自分で試していない。あなたがこれを行うことができますSchemaToolとEntityManagerを使用した

関連する問題