Tengo la siguiente estructura de carpetas.
index.php --> archivo en el raiz que conecta y prueba
lib/orm/ -->
--- doctrine.php --> donde he indicado que la conexión es cli-config.php
---cli.config
lib/orm/Entities --> Entidades
lib/orm/doctrine-orm --> aqui tengo los archivos de Doctrine2
el archivo cli-config.php es el siguiente: donde entrando por la URL y enviando el parametro Generar, me genera las clases. Pero no se si correctamente ya que no me pone el namspace. Creo que el fallo puede ser en este paso.
Código PHP:
<?php
use DoctrineORMToolsEntityGenerator;
//ini_set("display_errors", "On");
ini_set("display_errors", "1");
// this is not necessary if you use Doctrine2 with PEAR
$libPath = __DIR__ . '/doctrine-orm/';
// autoloaders
require_once 'Doctrine/Common/ClassLoader.php';
// (1) Autocargamos clases
$classLoader = new DoctrineCommonClassLoader('Doctrine', $libPath); // custom path
$classLoader->register();
$classLoader = new DoctrineCommonClassLoader('Entities', __DIR__ . '/Entities');
$classLoader->register();
$classLoader = new DoctrineCommonClassLoader('Proxies', __DIR__ . '/Proxies');
$classLoader->register();
// (2) Configuración
$config = new DoctrineORMConfiguration();
// (3) Caché
$config->setMetadataCacheImpl(new DoctrineCommonCacheArrayCache);
// (4) Driver
$config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(__DIR__ . '/Entities'));
$config->setProxyNamespace('Proxies');
// (5) Proxies
$config->setProxyDir(__DIR__ . '/Proxies');
$config->setProxyNamespace('Proxies');
// (6) Conexión
$connectionParams = array(
'dbname' => 'pruebas',
'user' => 'DESAS',
'password' => 'ebixa',
'host' => 'localhost',
'driver' => 'pdo_sqlsrv',
);
// (7) EntityManager
$em = DoctrineORMEntityManager::create($connectionParams, $config);
// (8) Código de prueba
//$user = new EntitiesUser();
//$address = new EntitiesAddress();
echo 'Hola mundo!' . PHP_EOL;
if (isset($_GET["generar"])) {
//echo __DIR__ . '../model/entities';
// custom datatypes (not mapped for reverse engineering)
$em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('set', 'string');
$em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
// fetch metadata
$driver = new DoctrineORMMappingDriverDatabaseDriver(
$em->getConnection()->getSchemaManager()
);
$em->getConfiguration()->setMetadataDriverImpl($driver);
$cmf = new DoctrineORMToolsDisconnectedClassMetadataFactory();
$cmf->setEntityManager($em); // we must set the EntityManager
$classes = $driver->getAllClassNames();
$metadata = array();
foreach ($classes as $class) {
//any unsupported table/schema could be handled here to exclude some classes
if (true) {
$metadata[] = $cmf->getMetadataFor($class);
}
}
$generator = new EntityGenerator();
$generator->setUpdateEntityIfExists(true); // only update if class already exists
//$generator->setRegenerateEntityIfExists(true); // this will overwrite the existing classes
$generator->setGenerateStubMethods(false);
$generator->setGenerateAnnotations(true);
$generator->generate($metadata, __DIR__ . '/Entities');
print 'Done!';
}
?>
Ya finalmente intento hacer este código, para poder hacer una consulta como hacia con dictrine1, primero incluyo el codigo de cli_config.php para que me decuelva el $em.
Código PHP:
require_once 'lib/orm/cli-config3.php';
//$em = EntityManagerFactory::createEntityManager();
$huesped = new Huesped();
$huesped->setDocumento("1111111");
$huesped->setNombres("Juan");
$huesped->setApellidos("Perez");
$huesped->setTelefono("555555");
//$fecha = new DateTime();
//$huesped->setFechaNacimiento($fecha->createFromFormat("d/m/Y", "28/10/1986"));
//persistimos el objeto utilizando el método persist que proporciona el EntityManager
//, para un manejo correcto de errores, debemos utilizar un bloque try catch:
$em->persist($huesped);
//sincronizamos los datos entre la base de datos y el EntityManager.
$em->flush();
//una vez persistido el objeto huesped y sincronizados los datos, podemos conocer
//el id que se asignó a dicho objeto, con tan solo hacer un llamado al método getId()
//del objeto huesped.
try {
$em->persist($huesped);
echo 'Se persistió el huesped ' . $huesped->getNombres() . ' ' . $huesped->getApellidos() . ' con ID ' . $huesped->getId();
echo '<strong>La tabla huesped contiene los siguientes datos</strong>';
$query = $em->createQuery("SELECT h FROM entities\Huesped h");
print_r($query->getResult());
} catch (Exception $exc) {
echo $exc->getMessage();
}
Espero que me puedan ayudar