2012-05-20 12 views

Antwort

18

Mit SchemaTool und EntityManager Sie können dies tun:

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

Wie kann ich feststellen, dass das Schema vor oder nicht erstellt wird? –

+0

Ich glaube nicht, dass es eine Möglichkeit gibt zu sehen, ob das Schema erstellt wurde. Meiner Erfahrung nach habe ich einfach '$ schemaTool-> dropSChema ($ classes)' vor der Erstellung verwendet. – trevorengstrom

+1

@Sina Miandashti können Sie auch einen Versuch-Fang tun. 'try {// hier Tabellencode erstellen} catch (\ Doctrine \ ORM \ Tools \ ToolsException $ exc) {// Tabelle existiert}' – Hokusai

4

Ich bin nicht sicher, was Sie tun wollen, aber wenn Sie es von PHP-Code tun mögen, können Sie überprüfen, wie funktioniert der Doktrin-Befehl und kopiere den Code. Sie können es hier finden:

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

Wenn Sie die Methode ausführen überprüfen, Sie werden sehen, wie es gemacht wird. Offensichtlich müssen Sie eine Verbindung über den DBAL DriverManager erhalten, der Ihnen Zugriff auf ein Schema-Objekt gewährt, das wiederum eine createDatabase-Methode hat. Ich habe das selbst nicht versucht.

Verwandte Themen