private function EntityGenerator($metadata) { $generator = new \Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); $generator->generate($metadata, $this->entityFolder); }
/** * generate entity objects automatically from mysql db tables * @return none */ function generate_classes() { $this->em->getConfiguration()->setMetadataDriverImpl(new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($this->em->getConnection()->getSchemaManager())); $platform = $this->em->getConnection()->getDatabasePlatform(); $platform->registerDoctrineTypeMapping('enum', 'string'); $cmf = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory(); $cmf->setEntityManager($this->em); $metadata = $cmf->getAllMetadata(); $generator = new \Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); $generator->generate($metadata, APPPATH . "models/Entities"); }
private function generateUpdateEntity(&$em = null, $classes = array()) { $t = new \Doctrine\ORM\Tools\EntityGenerator($em); $t->setUpdateEntityIfExists(TRUE); $t->setGenerateAnnotations(TRUE); $t->setGenerateStubMethods(TRUE); $t->generate($classes, PATH_ROOT); }
include __DIR__ . '/vendor/autoload.php'; $classLoader = new \Doctrine\Common\ClassLoader('Entities', __DIR__); $classLoader->register(); $classLoader = new \Doctrine\Common\ClassLoader('Proxies', __DIR__); $classLoader->register(); // config $config = new \Doctrine\ORM\Configuration(); $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(__DIR__ . '/app/src/Entity')); $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache()); $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Proxies'); $connectionParams = array('driver' => 'pdo_mysql', 'host' => '127.0.0.1', 'port' => '3306', 'user' => 'root', 'password' => 'password', 'dbname' => 'project_directory', 'charset' => 'utf8mb4'); $em = \Doctrine\ORM\EntityManager::create($connectionParams, $config); // custom datatypes (not mapped for reverse engineering) $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); // fetch metadata $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($em->getConnection()->getSchemaManager()); $em->getConfiguration()->setMetadataDriverImpl($driver); $cmf = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory($em); $cmf->setEntityManager($em); $classes = $driver->getAllClassNames(); $metadata = $cmf->getAllMetadata(); $generator = new Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); $generator->generate($metadata, __DIR__ . '/app/src/Entity'); print '-------------------------------------------' . PHP_EOL; print ' Done! Generated models to `app\\src\\Entity`' . PHP_EOL; print '-------------------------------------------' . PHP_EOL;
include __DIR__ . '/vendor/autoload.php'; $classLoader = new \Doctrine\Common\ClassLoader('Entities', __DIR__); $classLoader->register(); $classLoader = new \Doctrine\Common\ClassLoader('Proxies', __DIR__); $classLoader->register(); // config $config = new \Doctrine\ORM\Configuration(); $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(__DIR__ . '/app/src/models')); $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache()); $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Proxies'); $connectionParams = array('driver' => 'pdo_pgsql', 'host' => '127.0.0.1', 'port' => '5432', 'user' => 'postgres', 'password' => '240315', 'dbname' => 'shopper', 'charset' => 'utf8'); $em = \Doctrine\ORM\EntityManager::create($connectionParams, $config); // custom datatypes (not mapped for reverse engineering) $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); // fetch metadata $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($em->getConnection()->getSchemaManager()); $em->getConfiguration()->setMetadataDriverImpl($driver); $cmf = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory($em); $cmf->setEntityManager($em); $classes = $driver->getAllClassNames(); $metadata = $cmf->getAllMetadata(); $generator = new Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); $generator->generate($metadata, __DIR__ . '/app/src/models'); print '-------------------------------------------' . PHP_EOL; print ' Done! Generated models to `app\\src\\models`' . PHP_EOL; print '-------------------------------------------' . PHP_EOL;
<?php /** * CLI Config file for the Doctrine2 CLI. */ //Do the bootstrap manually define('APPPATH', dirname(__FILE__) . '/application/'); define('BASEPATH', APPPATH . '/../system/'); define('ENVIRONMENT', 'development'); require APPPATH . 'vendor/autoload.php'; require APPPATH . '/libraries/Doctrine.php'; $doctrine = new Doctrine(); $entityManager = $doctrine->em; $entityManager->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $entityManager->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($entityManager->getConnection()->getSchemaManager()); $entityManager->getConfiguration()->setMetadataDriverImpl($driver); $cmf = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory($em); $cmf->setEntityManager($entityManager); $classes = $driver->getAllClassNames(); $metadata = $cmf->getAllMetadata(); $generator = new Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(false); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); $generator->generate($metadata, APPPATH . 'models/Entity');
/** * Tenta estabelecer a conexão ao banco relacional ou de documentos. * * @return \Doctrine\ORM\EntityManager | \Doctrine\ODM\MongoDB\DocumentManager */ private function estabelecerConexao() { $tipo = explode(':', $this->_configuracao->get($this->_servidor . '.persistencia_uri')); $tipo = $tipo[0]; if (!empty($tipo)) { if ($tipo === 'mongodb') { \Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver::registerAnnotationClasses(); } $classLoader = new ClassLoader('Domain\\Entity', implode(DIRECTORY_SEPARATOR, [__APPDIR__, 'app', 'models'])); $classLoader->register(); $doctrine_models_dir = implode(DIRECTORY_SEPARATOR, [__APPDIR__, 'app', 'models']); $doctrine_entities_dir = implode(DIRECTORY_SEPARATOR, [__APPDIR__, 'app', 'models', 'Domain', 'Entity']); $doctrine_proxies_dir = implode(DIRECTORY_SEPARATOR, [__APPDIR__, 'tmp', 'models', 'Domain', 'Entity', 'Proxies']); $doctrine_hydrators_dir = implode(DIRECTORY_SEPARATOR, [__APPDIR__, 'tmp', 'models', 'Domain', 'Entity', 'Hydrators']); // cria os diretórios dos proxys e hydrators, caso não haja (necessários // para o Doctrine) if (!PROJECT_STAGE) { Arquivo::criarDiretorio($doctrine_proxies_dir); Arquivo::criarDiretorio($doctrine_hydrators_dir); } // verifica se não é MongoDB if ($tipo !== 'mongodb') { // provê algumas informações iniciais do banco de dados switch ($tipo) { case 'sqlite': $parametrosConexao = ['driver' => 'pdo_' . $tipo, 'path' => $this->_configuracao->get($this->_servidor . '.persistencia_banco')]; break; case 'mysql': $parametrosConexao = ['driver' => 'pdo_' . $tipo, 'user' => $this->_configuracao->get($this->_servidor . '.persistencia_usuario'), 'password' => $this->_configuracao->get($this->_servidor . '.persistencia_senha'), 'host' => $this->_configuracao->get($this->_servidor . '.persistencia_servidor'), 'dbname' => $this->_configuracao->get($this->_servidor . '.persistencia_banco'), \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'' . $this->_configuracao->get($this->_servidor . '.persistencia_charset') . '\'; SET CHARACTER SET \'' . $this->_configuracao->get($this->_servidor . '.persistencia_charset') . '\'; SET character_set_connection=\'' . $this->_configuracao->get($this->_servidor . '.persistencia_charset') . '\'; SET character_set_client=\'' . $this->_configuracao->get($this->_servidor . '.persistencia_charset') . '\'; SET character_set_results=\'' . $this->_configuracao->get($this->_servidor . '.persistencia_charset') . '\';']; break; // em teste funciona para quase todos os tipos de PDO // em teste funciona para quase todos os tipos de PDO default: $parametrosConexao = ['driver' => 'pdo_' . $tipo, 'user' => $this->_configuracao->get($this->_servidor . '.persistencia_usuario'), 'password' => $this->_configuracao->get($this->_servidor . '.persistencia_senha'), 'host' => $this->_configuracao->get($this->_servidor . '.persistencia_servidor'), 'dbname' => $this->_configuracao->get($this->_servidor . '.persistencia_banco')]; break; } // cria os mapeamentos das entidades do banco de dados, caso não existam if (count(glob($doctrine_entities_dir . '/*.php')) === 0) { $configuracao = new \Doctrine\ORM\Configuration(); $configuracao->setMetadataDriverImpl($configuracao->newDefaultAnnotationDriver($doctrine_entities_dir, FALSE)); $configuracao->setProxyDir($doctrine_proxies_dir); $configuracao->setProxyNamespace('Proxies'); $entityManager = \Doctrine\ORM\EntityManager::create($parametrosConexao, $configuracao); // custom datatypes (not mapped for reverse engineering) $entityManager->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $entityManager->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); // define namespace $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($entityManager->getConnection()->getSchemaManager()); $driver->setNamespace('Domain\\Entity\\'); // define driver with namespace $entityManager->getConfiguration()->setMetadataDriverImpl($driver); $disconnectedClassMetadataFactory = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory(); $disconnectedClassMetadataFactory->setEntityManager($entityManager); $entityGenerator = new \Doctrine\ORM\Tools\EntityGenerator(); $entityGenerator->setUpdateEntityIfExists(true); $entityGenerator->setGenerateStubMethods(true); $entityGenerator->setGenerateAnnotations(true); $entityGenerator->generate($disconnectedClassMetadataFactory->getAllMetadata(), $doctrine_models_dir); } // carrega as entidades \Pudim\Arquivo::requererDiretorio($doctrine_entities_dir); $configuracao = \Doctrine\ORM\Tools\Setup::createConfiguration(!(bool) PROJECT_STAGE); $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver(new \Doctrine\Common\Annotations\AnnotationReader(), $doctrine_entities_dir); // registering noop annotation autoloader - allow all annotations by default \Doctrine\Common\Annotations\AnnotationRegistry::registerLoader('class_exists'); $configuracao->setMetadataDriverImpl($driver); $configuracao->setAutoGenerateProxyClasses(!(bool) PROJECT_STAGE); $configuracao->setProxyDir($doctrine_proxies_dir); $configuracao->setProxyNamespace('Proxies'); if (PROJECT_STAGE) { $cache = new \Doctrine\Common\Cache\ArrayCache(); } else { $cache = new \Doctrine\Common\Cache\ApcCache(); } $configuracao->setMetadataCacheImpl($cache); $configuracao->setQueryCacheImpl($cache); // obtaining the entity manager (7) $eventManager = new \Doctrine\Common\EventManager(); $conexao = \Doctrine\ORM\EntityManager::create($parametrosConexao, $configuracao, $eventManager); } else { $configuracao = new \Doctrine\ODM\MongoDB\Configuration(); $metadata = AnnotationDriver::create($doctrine_entities_dir); $configuracao->setMetadataDriverImpl($metadata); $configuracao->setAutoGenerateProxyClasses(!(bool) PROJECT_STAGE); $configuracao->setProxyDir($doctrine_proxies_dir); $configuracao->setProxyNamespace('Proxies'); $configuracao->setAutoGenerateHydratorClasses(!(bool) PROJECT_STAGE); $configuracao->setHydratorDir($doctrine_hydrators_dir); $configuracao->setHydratorNamespace('Hydrators'); $configuracao->setDefaultDB($this->_configuracao->get($this->_servidor . '.persistencia_banco')); //$configuracao->setLoggerCallable(function (array $log) { print_r($log); }); $cache_uri = $this->_configuracao->get($this->_servidor . '.cache_uri'); if (PROJECT_STAGE && class_exists('Redis') && $cache_uri) { // trata o $cache_uri pois somente precisamos do servidor e a porta if (strpos($cache_uri, '//')) { $cache_uri_parts = explode('//', $cache_uri); if (strpos($cache_uri_parts[1], ':')) { list($cache_server, $cache_port) = explode(':', $cache_uri_parts[1]); } else { $cache_server = $cache_uri_parts[1]; $cache_port = '6379'; } unset($cache_uri_parts); } else { $cache_server = $cache_uri; $cache_port = '6379'; } $redis = new \Redis(); $redis->pconnect($cache_server, $cache_port); $metadataCache = new \Doctrine\Common\Cache\RedisCache(); $metadataCache->setRedis($redis); $configuracao->setMetadataCacheImpl($metadataCache); unset($cache_server, $cache_port, $redis, $metadataCache); } $conexao = new \Doctrine\MongoDB\Connection($this->_configuracao->get($this->_servidor . '.persistencia_uri')); $conexao = \Doctrine\ODM\MongoDB\DocumentManager::create($conexao, $configuracao); // FIX: Muito importante pois força a criação dos índices no aplicativo $conexao->getSchemaManager()->ensureIndexes(); } } return $conexao; }
public function generate_entities() { // custom datatypes (not mapped for reverse engineering) $this->em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $this->em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); $this->em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('blob', 'string'); // fetch metadata $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($this->em->getConnection()->getSchemaManager()); $driver->setNamespace('models\\Entities\\'); //set driver implementation $this->em->getConfiguration()->setMetadataDriverImpl($driver); $cmf = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory($this->em); $cmf->setEntityManager($this->em); $classes = $driver->getAllClassNames(); //get class metadata $metadata = $cmf->getAllMetadata(); $generator = new \Doctrine\ORM\Tools\EntityGenerator(); $generator->setGenerateAnnotations(TRUE); $generator->setGenerateStubMethods(TRUE); $generator->setRegenerateEntityIfExists(TRUE); $generator->setUpdateEntityIfExists(TRUE); $generator->setBackupExisting(FALSE); try { $generator->generate($metadata, APPPATH . 'models/Entities'); print 'Done!'; } catch (exception $ex) { die($ex->getMessage()); } }
function generateEntities($rootDir, $metadata) { $generator = new Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); // only update if class already exists $generator->setRegenerateEntityIfExists(true); // this will overwrite the existing classes $generator->setGenerateStubMethods(true); //$generator->setGenerateAnnotations(true); $generator->generate($metadata, $rootDir); }
include __DIR__ . '/vendor/autoload.php'; $classLoader = new \Doctrine\Common\ClassLoader('Entities', __DIR__); $classLoader->register(); $classLoader = new \Doctrine\Common\ClassLoader('Proxies', __DIR__); $classLoader->register(); // config $entityFolder = __DIR__ . '/Entities'; $config = new \Doctrine\ORM\Configuration(); $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver($entityFolder)); $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache()); $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Proxies'); $connectionParams = array('driver' => 'pdo_mysql', 'host' => 'localhost', 'port' => '3306', 'user' => 'root', 'password' => 'root', 'dbname' => 'sample', 'charset' => 'utf8'); $em = \Doctrine\ORM\EntityManager::create($connectionParams, $config); // custom datatypes (not mapped for reverse engineering) $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); // fetch metadata $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($em->getConnection()->getSchemaManager()); $em->getConfiguration()->setMetadataDriverImpl($driver); $cmf = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory($em); $cmf->setEntityManager($em); $classes = $driver->getAllClassNames(); $metadata = $cmf->getAllMetadata(); $generator = new Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); $generator->generate($metadata, $entityFolder); print PHP_EOL . 'Successfully generated entities to: `' . $entityFolder . '`' . PHP_EOL;
<?php include '../vendor/autoload.php'; $classLoader = new \Doctrine\Common\ClassLoader('Entities', __DIR__); $classLoader->register(); $classLoader = new \Doctrine\Common\ClassLoader('Proxies', __DIR__); $classLoader->register(); // config $config = new \Doctrine\ORM\Configuration(); $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(__DIR__ . '/Entities')); $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache()); $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Proxies'); $connectionParams = array('driver' => 'pdo_mysql', 'host' => 'localhost', 'port' => '3306', 'user' => 'root', 'password' => 'root', 'dbname' => 'db_amp_novo', 'charset' => 'utf8'); $em = \Doctrine\ORM\EntityManager::create($connectionParams, $config); // custom datatypes (not mapped for reverse engineering) $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); // fetch metadata $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($em->getConnection()->getSchemaManager()); $em->getConfiguration()->setMetadataDriverImpl($driver); $cmf = new \Doctrine\ORM\Tools\DisconnectedClassMetadataFactory($em); $cmf->setEntityManager($em); $classes = $driver->getAllClassNames(); $metadata = $cmf->getAllMetadata(); $generator = new Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); $generator->generate($metadata, __DIR__ . '/Entities'); print 'Done!';
$classLoader = new ClassLoader('Proxies', __DIR__); $classLoader->register(); //die(var_export($argv)); list($file, $host, $port, $db_name, $output_path) = $argv; // config $config = new Configuration(); $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(__DIR__ . '/Entities')); $config->setMetadataCacheImpl(new ArrayCache()); $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Proxies'); $connectionParams = array('driver' => 'pdo_mysql', 'host' => $host, 'port' => '3306', 'user' => 'root', 'password' => 'ampteste', 'dbname' => $db_name, 'charset' => 'utf8'); $em = EntityManager::create($connectionParams, $config); // custom datatypes (not mapped for reverse engineering) $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string'); $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('json', 'string'); // fetch metadata $driver = new DatabaseDriver($em->getConnection()->getSchemaManager()); $em->getConfiguration()->setMetadataDriverImpl($driver); $cmf = new DisconnectedClassMetadataFactory($em); $cmf->setEntityManager($em); $classes = $driver->getAllClassNames(); $metadata = $cmf->getAllMetadata(); $generator = new Doctrine\ORM\Tools\EntityGenerator(); $generator->setUpdateEntityIfExists(true); $generator->setGenerateStubMethods(true); $generator->setGenerateAnnotations(true); ColoredCli::println("Generating...", "black", "yellow"); sleep(1); $generator->generate($metadata, __DIR__ . "/{$output_path}"); ColoredCli::println("Done", "black", "green");