Estoy un poco extresado. No logro poder usar doctrine correctamente.
Al final voy a tener que implementarlo a la antigua usanza.
Tengo una funcion para la carga de doctrine, del entitymanager
Código PHP:
<?php
use DoctrineORMToolsSetup;
use DoctrineORMEntityManager;
function DoctrineLanzador(){
require_once 'Doctrine/Common/ClassLoader.php';
$loader = new DoctrineCommonClassLoader("Doctrine");
$loader->register();
$classLoader = new DoctrineCommonClassLoader('Entity', DIR_ENTIDADES );
$classLoader->register();
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => DB_USER,
'password' => DB_PASS,
'dbname' => DB_NAME
);
$path = array( DIR_ENTIDADES );
$config = Setup::createAnnotationMetadataConfiguration($path, true);
$em = EntityManager::create($dbParams, $config);
return $em;
}
?>
Guardo el EntityManager en mis modelos:
Código PHP:
require_once DIR_APLICACION_PRINCIPAL . 'DoctrineLanzador.php';
class claseModeloDoctrine{
public $_em;
public function __construct($dicc )
{
$this->_em = DoctrineLanzador();
}
...
}
Mis modelos extienden esta clase:
Código PHP:
class categoriaMod extends claseModeloDoctrine{
function __construct(){
parent::__construct( $dicc );
}
}
Tengo la entidad definida:
Código PHP:
<?php
namespace Entity;
use DoctrineCommonCollectionsArrayCollection;
/**
* @Entity
* @Table(name="categorias")
**/
class Categoria
{
/** @Id @GeneratedValue @Column(type="integer") **/
protected $id;
/** @ManyToOne(targetEntity="Categoria", inversedBy="categoriashijo" ) **/
protected $categoriapadre;
/** @OneToMany(targetEntity="Categoria", mappedBy="categoriapadre") **/
protected $categoriashijo;
/** @Column(type="string") **/
protected $nombre;
/** @Column(type="string") **/
protected $urlrelativa;
/** @Column(type="text") **/
protected $descripcion;
/** @Column(type="boolean") **/
protected $visible;
/** @Column(type="boolean") **/
protected $activo;
public function __construct( Categoria $categoria = null )
{
$this->categoriapadre = $categoria;
$this->categoriashijo = new ArrayCollection();
}
public function addCategoriaHijo( Categoria $categoria )
{
$this->categoriashijo[] = $categoria;
}
}
?>
En el controlador intento usar el EntityManager trayendome una categoria con id = 2 pero nada.
Código PHP:
$this->_categoria = $this->cargaModelo('categoria'); // instancia el modelo
$this->_vista->find = $this->_categoria->_em->find("Categoria", 2);
Pero me salta el siguiente error
Código:
Warning: require(D:\webs\mimascota\entidades\Entity\Categoria.php) [function.require]: failed to open stream: No such file or directory in C:\xampp\php\PEAR\Doctrine\Common\ClassLoader.php on line 163
Call Stack
# Time Memory Function Location
1 0.0002 334896 {main}( ) ..\indice.php:0
2 0.0006 363576 require_once( 'D:\webs\mimascota\indice.php' ) ..\indice.php:5
3 0.0277 2559576 Lanzador::run( ) ..\indice.php:46
4 0.0645 5884352 call_user_func ( ) ..\Lanzador.php:19
5 0.0645 5884352 clientesControlador->prueba( ) ..\Lanzador.php:19
6 0.0645 5884552 Doctrine\ORM\EntityManager->find( ) ..\clientesControlador.php:22
7 0.0647 5886688 Doctrine\ORM\EntityManager->getRepository( ) ..\EntityManager.php:371
8 0.0647 5886752 Doctrine\ORM\EntityManager->getClassMetadata( ) ..\EntityManager.php:613
9 0.0647 5886752 Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor( ) ..\EntityManager.php:269
10 0.0648 5886784 Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata( ) ..\ClassMetadataFactory.php:178
11 0.0648 5886968 Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses( ) ..\ClassMetadataFactory.php:254
12 0.0655 5911928 Doctrine\Common\Persistence\Mapping\RuntimeReflectionService->getParentClasses( ) ..\ClassMetadataFactory.php:231
13 0.0655 5911960 class_parents ( ) ..\RuntimeReflectionService.php:40
14 0.0655 5912200 Doctrine\Common\ClassLoader->loadClass( ) ..\ClassLoader.php:0
( ! ) Fatal error: require() [function.require]: Failed opening required 'D:\webs\mimascota\entidades\Entity\Categoria.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\php\PEAR\Doctrine\Common\ClassLoader.php on line 163
Call Stack
# Time Memory Function Location
1 0.0002 334896 {main}( ) ..\indice.php:0
2 0.0006 363576 require_once( 'D:\webs\mimascota\indice.php' ) ..\indice.php:5
3 0.0277 2559576 Lanzador::run( ) ..\indice.php:46
4 0.0645 5884352 call_user_func ( ) ..\Lanzador.php:19
5 0.0645 5884352 clientesControlador->prueba( ) ..\Lanzador.php:19
6 0.0645 5884552 Doctrine\ORM\EntityManager->find( ) ..\clientesControlador.php:22
7 0.0647 5886688 Doctrine\ORM\EntityManager->getRepository( ) ..\EntityManager.php:371
8 0.0647 5886752 Doctrine\ORM\EntityManager->getClassMetadata( ) ..\EntityManager.php:613
9 0.0647 5886752 Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor( ) ..\EntityManager.php:269
10 0.0648 5886784 Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata( ) ..\ClassMetadataFactory.php:178
11 0.0648 5886968 Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses( ) ..\ClassMetadataFactory.php:254
12 0.0655 5911928 Doctrine\Common\Persistence\Mapping\RuntimeReflectionService->getParentClasses( ) ..\ClassMetadataFactory.php:231
13 0.0655 5911960 class_parents ( ) ..\RuntimeReflectionService.php:40
14 0.0655 5912200 Doctrine\Common\ClassLoader->loadClass( ) ..\ClassLoader.php:0
Necesito ayuda amigos QQ
EDITADO:
Por fin parece que ya me funciona. Que alibio!