He probado en mi controlador de 3 maneras:
( Simplemente estoy probando si funciona, tengo claro que luego tengo que hacer metodos en los modelos para hacer llamadas del tipo $modelo->encuentra($id) en vez de $modelo->_em->find("nombreEntidad", $id ) ).
Código:
public function prueba(){
$this->_regs->titulo = 'Prueba';
//$dql = 'SELECT id, nombre FROM Categoria WHERE 1 = 1';
//$this->_regs->find = $this->_categoria->_em->createQuery($dql)->getResult();
$this->_regs->find2 = $this->_categoria->_em->find("Categoria", 2);
//$this->_regs->find = $this->_categoria->_em->getRepository("categoria")->find(array('id'=>2));
$this->_vista->renderizar('prueba');
}
_categoria es una propiedad del controlador que es una instancia del modelo que tiene una propiedad _em que es el EntityManager, iniciado en el constructor del modelo.
Constructor del modelo
Código:
public function __construct()
{
require_once DIR_APLICACION_PRINCIPAL . 'DoctrineLanzador.php';
$this->_em = $em;
}
Archivo DoctrineLanzador.php
Código:
<?php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once 'Doctrine/Common/ClassLoader.php';
$loader = new \Doctrine\Common\ClassLoader("Doctrine");
$loader->register();
$classLoader = new \Doctrine\Common\ClassLoader('Entity', 'D:/webs/mimascota/entidades/');
$classLoader->register();
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => DB_USER,
'password' => DB_PASS,
'dbname' => DB_NAME
);
$path = array( 'D:/webs/mimascota/entidades/' );
$config = Setup::createAnnotationMetadataConfiguration($path, true);
$em = EntityManager::create($dbParams, $config);
?>
¿ Esta bien hecho asi compañero ? ¿ que me dices ?