Skip to content

Instantly share code, notes, and snippets.

@danielalvarenga
Created October 29, 2012 22:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielalvarenga/3976832 to your computer and use it in GitHub Desktop.
Save danielalvarenga/3976832 to your computer and use it in GitHub Desktop.
<?php
class Bd_manager_doctrine extends CI_Controller{
public $entities = '';
public function __construct(){
require_once "/../models/Entities/Admin.php";
require_once "/../models/Entities/Log.php";
require_once "/../models/Entities/Usuario.php";
require_once "/../models/Entities/PremiosUsuario.php";
require_once "/../models/Entities/Aposta.php";
require_once "/../models/Entities/Time.php";
require_once "/../models/Entities/Pais.php";
require_once "/../models/Entities/Jogo.php";
require_once "/../models/Entities/Rodada.php";
require_once "/../models/Entities/Campeonato.php";
require_once "/../models/Entities/RendimentoTime.php";
require_once "/../models/Entities/PontuacaoRodada.php";
require_once "/../models/Entities/PontuacaoGeral.php";
require_once "/../models/Entities/ContadorAposta.php";
$this->entities = array(
$this->doctrine->em->getClassMetadata('Admin'),
$this->doctrine->em->getClassMetadata('Log'),
$this->doctrine->em->getClassMetadata('Pais'),
$this->doctrine->em->getClassMetadata('Time'),
$this->doctrine->em->getClassMetadata('Campeonato'),
$this->doctrine->em->getClassMetadata('RendimentoTime'),
$this->doctrine->em->getClassMetadata('Rodada'),
$this->doctrine->em->getClassMetadata('Jogo'),
$this->doctrine->em->getClassMetadata('Usuario'),
$this->doctrine->em->getClassMetadata('Aposta'),
$this->doctrine->em->getClassMetadata('ContadorAposta'),
$this->doctrine->em->getClassMetadata('PremiosUsuario'),
$this->doctrine->em->getClassMetadata('PontuacaoRodada'),
$this->doctrine->em->getClassMetadata('PontuacaoGeral')
);
}
public function index(){
}
public function create_schema(){
$this->doctrine->tool->createSchema($this->entities); // cria novo banco de dados
}
public function update_schema(){
$this->doctrine->tool->updateSchema($this->entities); // atualiza o banco de dados
}
public function drop_schema(){
$this->doctrine->tool->dropSchema($this->entities); // remove banco de dados
}
}
?>
<?php
use Doctrine\Common\ClassLoader,
Doctrine\ORM\Configuration,
Doctrine\ORM\EntityManager,
Doctrine\Common\Cache\ArrayCache,
Doctrine\DBAL\Logging\EchoSQLLogger,
Symfony\Component\Console;
use Doctrine\ORM\Tools\Setup;
//O comentário abaixo serve para que a IDE (NetBeans 7.2 por exemplo) consiga fazer a leitura do framework e mostrar dicas de código.
/**
* @property \Doctrine\ORM\EntityManager $em Gerenciador de Entidade
*/
class Doctrine
{
public $em = '';
public $tool = '';
public function __construct()
{
// Set up class loading. You could use different autoloaders, provided by your favorite framework,
// if you want to.
require_once APPPATH . 'third_party/DoctrineORM-2.3.0/libraries/Doctrine/Common/ClassLoader.php';
require_once APPPATH . "third_party/DoctrineORM-2.3.0/libraries/Doctrine/ORM/Tools/Setup.php";
Doctrine\ORM\Tools\Setup::registerAutoloadDirectory(APPPATH . "third_party/DoctrineORM-2.3.0/libraries/");
$doctrineClassLoader = new ClassLoader('Doctrine', APPPATH . 'third_party//libraries');
$doctrineClassLoader->register();
$proxiesClassLoader = new ClassLoader('Proxies', APPPATH . 'models/proxies');
$proxiesClassLoader->register();
// Set up caches
$config = new Configuration;
$cache = new ArrayCache;
$config->setMetadataCacheImpl($cache);
$driverImpl = $config->newDefaultAnnotationDriver(array(APPPATH . 'models/Entities'));
$config->setMetadataDriverImpl($driverImpl);
$config->setQueryCacheImpl($cache);
$config->setQueryCacheImpl($cache);
// Proxy configuration
$config->setProxyDir(APPPATH . '/models/proxies');
$config->setProxyNamespace('Proxies');
// Set up logger
#$logger = new EchoSQLLogger;
#$config->setSQLLogger($logger);
$config->setAutoGenerateProxyClasses(TRUE);
require APPPATH . 'config/database.php';
// Database connection information
$connectionOptions = array(
'driver' => 'pdo_mysql',
'user' => $db['default']['username'],
'password' => $db['default']['password'],
'host' => $db['default']['hostname'],
'dbname' => $db['default']['database'],
'charset' => 'utf8',
'driverOptions' => array(1002 => 'SET NAMES utf8') // evita erros de acentuação na minha base de dados (se criada com “utf8_general_ci” e o projeto na IDE com codificação UTF-8)
);
// Enforce connection character set. This is very important if you are
// using MySQL and InnoDB tables!
//Doctrine_Manager::connection()->setCharset('utf8');
//Doctrine_Manager::connection()->setCollate('utf8_general_ci');
// Create EntityManager
$this->em = EntityManager::create($connectionOptions, $config);
$this->tool = new \Doctrine\ORM\Tools\SchemaTool($this->em);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment