Ver Mensaje Individual
  #30 (permalink)  
Antiguo 29/03/2012, 10:59
chemajmb
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Empezando con Doctrine 2.2.1

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($pathtrue);
        
        
$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 
__constructCategoria $categoria null )
    {
        
$this->categoriapadre $categoria;
        
$this->categoriashijo = new ArrayCollection();
    }

    public function 
addCategoriaHijoCategoria $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!

Última edición por chemajmb; 29/03/2012 a las 12:01