2012-05-20 16 views

Odpowiedz

18

Korzystanie SchemaTool i EntityManager można to zrobić:

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

jak ustalić, czy schemat został utworzony przed, czy nie? –

+0

Nie wierzę, że istnieje sposób sprawdzenia, czy schemat został utworzony. Z mojego doświadczenia wynika, że ​​po prostu użyłem '$ schemaTool-> dropSChema ($ classes)' przed utworzeniem go. – trevorengstrom

+1

@Sina Miandashti możesz również spróbować. 'try {// tutaj utwórz kod tabeli} catch (\ Doctrine \ ORM \ Tools \ ToolsException $ exc) {// Tabela istnieje}' – Hokusai

4

Nie jestem pewien, co chcesz zrobić, ale jeśli chcesz to zrobić z kodu php, można sprawdzić jak działa polecenie doktryny i skopiuj kod. Znajdziesz go tutaj:

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

Jeśli zaznaczysz metodę wykonywania, zobaczysz, jak to się robi. Najwyraźniej musisz uzyskać połączenie przez DBAL DriverManager, który daje ci dostęp do obiektu schematu, który z kolei ma metodę createDatabase. Nie próbowałem tego sam.

Powiązane problemy