Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2011, 19:16
nico8287
 
Fecha de Ingreso: febrero-2007
Mensajes: 58
Antigüedad: 17 años, 10 meses
Puntos: 1
Doctrine no me trae objeto

Hola amigos soy nuevo en Doctrine y estoy realizando una aplicación y no puedo recuperar un objeto que tiene relacion con varios otros, la relacion seria algo asi.
La Clase Cliente extiende la Clase User, les comento las relaciones

Un cliente tiente una lista y una lista tiene mucho productos, vista del otro lado un producto pertenece a varias listas y una lista podira perteneces a muchos clientes

Cliente >-- Lista >--< Producto

Estoy utilizando Codeigniter entonces mis clases estan dentro de la carpeta models y dentro de la misma tento la carpeta repositorioes.
Carpetas
models (Carpeta)
----repositories (Carpeta que contiene los archivos que se indican en la doc de cada clase)
----User.php
----Cliente.php
----Lista.php
----Producto.php

La base de datos la cree con el comando de Doctrine por lo tanto me lo toma bien a las relaciones, tambien he podido realizar inserciones pero al momento de realizar la consulta $cliente->getLista() ya me produce error.

lo que me retorna al queres llamar al metodo:

A PHP Error was encountered

Severity: Warning

Message: file_put_contents(application/models/Proxies/modelsListaProxy.php): failed to open stream: No such file or directory

Filename: Proxy/ProxyFactory.php

Line Number: 155

A PHP Error was encountered
-----------------------------------------------------------------------------------------------
Severity: Warning

Message: require(application/models/Proxies/modelsListaProxy.php): failed to open stream: No such file or directory

Filename: Proxy/ProxyFactory.php

Line Number: 85

--------------------------------------------------------------------------------------------

Les muestro lo interezante de mis clases que son las relaciones
ACALRACION ME QUITO ALGUNAS BARRAS DE LAS CLASES en realidad es: use \Doctrine\Common\Collections\ArrayCollection;
Clase Cliente
Código PHP:
namespace models;
use 
DoctrineCommonCollectionsArrayCollection;
/**
 * @Entity
 * @entity(repositoryClass="models\repositories\ClienteRepository")
 */
class Cliente extends User
{
    
/** 
     * @ManyToOne(targetEntity="Lista") 
     * @JoinColumn(name="lista_id", referencedColumnName="id" ) 
     */  
    
protected $mi_lista;

    public function 
getLista() {
        return 
$this->mi_lista;
    }

    public function 
setLista($lista) {
        
$this->mi_lista $lista;
    }

Clase Lista
Código PHP:
namespace models;
use 
DoctrineCommonCollectionsArrayCollection;
/**
 * @Entity
 * @Table(name="listas")
 * @entity(repositoryClass="models\repositories\ListaRepository")
*/
class Lista {
 
/** 
     * @OneToMany(targetEntity="Cliente", mappedBy="mi_lista") 
     */  
    
protected $clientes;
    
    
/**
     * @ManyToMany(targetEntity="Producto", inversedBy="listas")
     * @JoinTable(name="listas_productos",
     *      joinColumns={@JoinColumn(name="lista_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="producto_id", referencedColumnName="id")}
     * )
     */
    
protected $productos;

public function 
getClientes() {
        return 
$this->clientes;
    }

    public function 
setClientes($clientes) {
        
$this->clientes $clientes;
    }

    public function 
getProductos() {
        return 
$this->productos;
    }

    public function 
setProductos($productos) {
        
$this->productos $productos;
    }

Clase Producto
Código PHP:
namespace models;
use 
DoctrineCommonCollectionsArrayCollection;
/**
 * @Entity
 * @Table(name="productos")
 * @entity(repositoryClass="models\repositories\ProductoRepository")
 */
class Producto {
   
/**
    * @ManyToMany(targetEntity="Lista", mappedBy="productos")
    */
    
protected $listas;
public function 
getListas() {
        return 
$this->listas;
    }

    public function 
setListas($listas) {
        
$this->listas $listas;
    }

Espero que se entienda el problema cualquier ayuda sera muy bienvenida.

Saludos y gracias por leer el post.

Nico.