From a5afb74729acf1880547b5e7135bc28424c970f6 Mon Sep 17 00:00:00 2001 From: Craig Heydenburg Date: Thu, 18 Jun 2015 14:11:50 -0400 Subject: [PATCH] Add schema_tool service (replaces util/DoctrineHelper) --- .../CoreBundle/Resources/config/core.xml | 4 + .../Core/Doctrine/Helper/SchemaHelper.php | 89 +++++++++++++++++++ src/lib/util/DoctrineHelper.php | 4 + 3 files changed, 97 insertions(+) create mode 100644 src/lib/Zikula/Core/Doctrine/Helper/SchemaHelper.php diff --git a/src/lib/Zikula/Bundle/CoreBundle/Resources/config/core.xml b/src/lib/Zikula/Bundle/CoreBundle/Resources/config/core.xml index 3a6bfd26bf..c85233ce3f 100644 --- a/src/lib/Zikula/Bundle/CoreBundle/Resources/config/core.xml +++ b/src/lib/Zikula/Bundle/CoreBundle/Resources/config/core.xml @@ -37,6 +37,7 @@ Zikula\Bundle\CoreBundle\EventListener\ExceptionListener Zikula\Bundle\CoreBundle\EventListener\OutputCompressionListener Zikula\Bundle\CoreBundle\EventListener\StripFrontControllerListener + Zikula\Core\Doctrine\Helper\SchemaHelper @@ -155,5 +156,8 @@ + + + diff --git a/src/lib/Zikula/Core/Doctrine/Helper/SchemaHelper.php b/src/lib/Zikula/Core/Doctrine/Helper/SchemaHelper.php new file mode 100644 index 0000000000..3e89a0e65c --- /dev/null +++ b/src/lib/Zikula/Core/Doctrine/Helper/SchemaHelper.php @@ -0,0 +1,89 @@ +entityManager = $em; + $this->tool = new SchemaTool($em); + } + + /** + * create tables from array of entity classes + * @param array $classes + * @throws \Doctrine\ORM\Tools\ToolsException + */ + public function create(array $classes) + { + $metaClasses = array(); + foreach ($classes as $class) { + $metaClasses[] = $this->entityManager->getClassMetadata($class); + } + try { + $this->tool->createSchema($metaClasses); + } catch (\PDOException $e) { + throw $e; + } + } + + /** + * drop tables from array of entity classes + * @param array $classes + */ + public function drop(array $classes) + { + $metaClasses = array(); + foreach ($classes as $class) { + $metaClasses[] = $this->entityManager->getClassMetadata($class); + } + try { + $this->tool->dropSchema($metaClasses); + } catch (\PDOException $e) { + throw $e; + } + } + + /** + * update tables from array of entity classes + * @param array $classes + * @param bool $saveMode + */ + public function update(array $classes, $saveMode=true) + { + $metaClasses = array(); + foreach ($classes as $class) { + $metaClasses[] = $this->entityManager->getClassMetadata($class); + } + try { + $this->tool->updateSchema($metaClasses, $saveMode); + } catch (\PDOException $e) { + throw $e; + } + } +} diff --git a/src/lib/util/DoctrineHelper.php b/src/lib/util/DoctrineHelper.php index 7925e852ad..4df0ace0fc 100644 --- a/src/lib/util/DoctrineHelper.php +++ b/src/lib/util/DoctrineHelper.php @@ -14,6 +14,10 @@ use Doctrine\ORM\EntityManager as EntityManager; use Doctrine\ORM\Tools\SchemaTool as SchemaTool; +/** + * Class DoctrineHelper + * @deprecated to be removed at Core 2.0.0 + */ class DoctrineHelper { public static function createSchema(EntityManager $em, array $classes)