From 7ee8dc4e44e3a761b8dab23a18ded74c9f10d7a3 Mon Sep 17 00:00:00 2001 From: Alexander Date: Thu, 2 Jun 2011 21:45:03 +0200 Subject: [PATCH] DDC-1179 - Make it possible to specify a namespace when mapping with --from-database --- .../ORM/Mapping/Driver/DatabaseDriver.php | 22 +++++++++++++++++-- .../Console/Command/ConvertMappingCommand.php | 18 +++++++++++---- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php b/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php index 2805d5a21..0ee1060c7 100644 --- a/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php +++ b/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php @@ -66,6 +66,13 @@ class DatabaseDriver implements Driver */ private $fieldNamesForColumns = array(); + /** + * The namespace for the generated entities. + * + * @var string + */ + private $namespace; + /** * Initializes a new AnnotationDriver that uses the given AnnotationReader for reading * docblock annotations. @@ -348,10 +355,10 @@ class DatabaseDriver implements Driver private function getClassNameForTable($tableName) { if (isset($this->classNamesForTables[$tableName])) { - return $this->classNamesForTables[$tableName]; + return $this->namespace . $this->classNamesForTables[$tableName]; } - return Inflector::classify(strtolower($tableName)); + return $this->namespace . Inflector::classify(strtolower($tableName)); } /** @@ -376,4 +383,15 @@ class DatabaseDriver implements Driver } return Inflector::camelize($columnName); } + + /** + * Set the namespace for the generated entities. + * + * @param string $namespace + * @return void + */ + public function setNamespace($namespace) + { + $this->namespace = $namespace; + } } diff --git a/lib/Doctrine/ORM/Tools/Console/Command/ConvertMappingCommand.php b/lib/Doctrine/ORM/Tools/Console/Command/ConvertMappingCommand.php index 8c1a8fea1..d694999e4 100644 --- a/lib/Doctrine/ORM/Tools/Console/Command/ConvertMappingCommand.php +++ b/lib/Doctrine/ORM/Tools/Console/Command/ConvertMappingCommand.php @@ -78,6 +78,10 @@ class ConvertMappingCommand extends Console\Command\Command 'num-spaces', null, InputOption::VALUE_OPTIONAL, 'Defines the number of indentation spaces', 4 ), + new InputOption( + 'namespace', null, InputOption::VALUE_OPTIONAL, + 'Defines a namespace for the generated entity classes, if converted from database.' + ), )) ->setHelp(<<getHelper('em')->getEntityManager(); if ($input->getOption('from-database') === true) { - $em->getConfiguration()->setMetadataDriverImpl( - new \Doctrine\ORM\Mapping\Driver\DatabaseDriver( - $em->getConnection()->getSchemaManager() - ) + $databaseDriver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver( + $em->getConnection()->getSchemaManager() ); + + $em->getConfiguration()->setMetadataDriverImpl( + $databaseDriver + ); + + if (($namespace = $input->getOption('namespace')) !== null) { + $databaseDriver->setNamespace($namespace); + } } $cmf = new DisconnectedClassMetadataFactory();