Ver Mensaje Individual
  #11 (permalink)  
Antiguo 15/01/2013, 09:18
yanker
 
Fecha de Ingreso: septiembre-2008
Mensajes: 31
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Imposible de montar doctrine2 + php

Hola creo que los path están bien. Creo que en las pruebas he cambiado tal vez un poco la estructura, la voy a poner de nuevo aqui y voy a seguir esa para que no nos confundamos.

index.php --> Archivo donde intento obtener el entityManager y guardar un dato.(Fichero1)
lib/model/entities --> carpeta donde guardo las clases generadas automáticamente, con el (Fichero 2)
lib/model/proxies --> carpeta de los proxies, que está vacía.
lib/orm/doctrine-orm/Doctrine --> donde están todos los ficheros de doctrine
lib/orm/entitymanagerfactory.php --> fichero con el que conecto y obtengo un entitymanager de las clases generadas (Fichero3)

(Fichero1)
Código PHP:
<?php

//Paso 1: Obtenemos una referencia del EntityManager
include_once "lib/orm/EntityManagerFactory.php";
$em EntityManagerFactory::createEntityManager();

//Paso 2: Creamos un objeto Huesped y le seteamos algunos valores para sus propiedades
$huesped = new EntitiesHuesped();
$huesped->setDocumento("1111111");
$huesped->setNombres("Juan");
$huesped->setApellidos("Perez");
$huesped->setTelefono("555555");

try {
    
//Paso 3: Persistimos el objeto Huesped
    
$em->persist($huesped);

    
//Paso 4: Sincronizamos los datos entre la bd y el EntityManager
    
$em->flush();

    
//Paso 5: Obtenemos el Id asignado al objeto que acabamos de persistir
    
echo 'Se persisti&oacute; el huesped ' $huesped->getNombres() . ' ' $huesped->getApellidos() . ' con ID ' $huesped->getId();

    
//Paso 6: Consultamos todos los objetos Huesped persistidos hasta ahora
    
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();
}
?>
(Fichero2)
Código PHP:
<?php

namespace Entities
;

use 
DoctrineORMMapping as ORM;

/**
 * 
 *
 * @ORM\Table(name="Huesped")
 * @ORM\Entity
 */
class Huesped
{
    
/**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    
private $id;

    
/**
     * @var string
     *
     * @ORM\Column(name="documento", type="string", length=10, nullable=false)
     */
    
private $documento;

    
/**
     * @var string
     *
     * @ORM\Column(name="nombres", type="string", length=50, nullable=false)
     */
    
private $nombres;

    
/**
     * @var string
     *
     * @ORM\Column(name="apellidos", type="string", length=50, nullable=false)
     */
    
private $apellidos;

    
/**
     * @var string
     *
     * @ORM\Column(name="telefono", type="string", length=10, nullable=false)
     */
    
private $telefono;


    
/**
     * Get id
     *
     * @return integer 
     */
    
public function getId()
    {
        return 
$this->id;
    }

    
/**
     * Set documento
     *
     * @param string $documento
     * @return Huesped
     */
    
public function setDocumento($documento)
    {
        
$this->documento $documento;
    
        return 
$this;
    }

    
/**
     * Get documento
     *
     * @return string 
     */
    
public function getDocumento()
    {
        return 
$this->documento;
    }

    
/**
     * Set nombres
     *
     * @param string $nombres
     * @return Huesped
     */
    
public function setNombres($nombres)
    {
        
$this->nombres $nombres;
    
        return 
$this;
    }

    
/**
     * Get nombres
     *
     * @return string 
     */
    
public function getNombres()
    {
        return 
$this->nombres;
    }

    
/**
     * Set apellidos
     *
     * @param string $apellidos
     * @return Huesped
     */
    
public function setApellidos($apellidos)
    {
        
$this->apellidos $apellidos;
    
        return 
$this;
    }

    
/**
     * Get apellidos
     *
     * @return string 
     */
    
public function getApellidos()
    {
        return 
$this->apellidos;
    }

    
/**
     * Set telefono
     *
     * @param string $telefono
     * @return Huesped
     */
    
public function setTelefono($telefono)
    {
        
$this->telefono $telefono;
    
        return 
$this;
    }

    
/**
     * Get telefono
     *
     * @return string 
     */
    
public function getTelefono()
    {
        return 
$this->telefono;
    }
}

(Fichero3)
Código PHP:
<?php

require_once __DIR__ '/doctrine-orm/Doctrine/Common/ClassLoader.php';

use 
DoctrineCommonClassLoader,
    
DoctrineORMConfiguration,
    
DoctrineORMEntityManager,
    
DoctrineCommonCacheApcCache;

/**
 * Description of EntityManagerFactory
 * @author Juan Carlos Perez Zapata
 * @version 0.1
 */
class EntityManagerFactory {

    
/**
     * @var Doctrine\ORM\EntityManager
     */
    
private static $em;

    
/**
     * 
     * @return Doctrine\ORM\EntityManager
     */
    
public static function createEntityManager() {

        if (
self::$em == null) {

            
//Paso 1: Cargamos las clases del namespace Doctrine
            
$classLoader = new DoctrineCommonClassLoader('Doctrine'__DIR__ '/doctrine-orm');
            
$classLoader->register();

            
// Paso 2: Cargamos las entidades            
            
$entitiesClassLoader = new ClassLoader('Entities'realpath("lib/model"));
            
$entitiesClassLoader->register();

            
//Paso 3: Cargamos las clases que sirven de proxies
            
$proxiesClassLoader = new ClassLoader('proxies'realpath("lib/model"));
            
$proxiesClassLoader->register();

            
//Paso 4: Configuracion de la caché
            
$config = new Configuration();
            
$config->setMetadataCacheImpl(new DoctrineCommonCacheArrayCache());

            
//Paso 5: Configuracion de los metadatos de la entidades
            
$driverImpl $config->newDefaultAnnotationDriver(array(__DIR__ "/../model/entities"));
            
$config->setMetadataDriverImpl($driverImpl);


            
//Paso 6: Configuracion clases proxies
            
$config->setProxyDir(__DIR__ '/../model/proxies');
            
$config->setProxyNamespace('proxies');

            
//Paso 7: Configuración de los datos de conexión
            
$connectionOptions = array(
                
'driver' => 'pdo_sqlsrv',
                
'host' => 'localhost',
                
'dbname' => 'pruebas',
                
'user' => 'DES',
                
'password' => 'ebixa123'
            
);
            
//Pase 8: Creacion EntityManager
            
self::$em EntityManager::create($connectionOptions$config);
        }
        return 
self::$em;
    }
}
ESTOS SON LOS CORRECTOS, PERDONAR.

El error que me da nuevamente es: Class "Entities\Huesped" is not a valid entity or mapped super class.

Gracias