Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Doctrine 2: Creando las entidades y sus metodos

Estas en el tema de Doctrine 2: Creando las entidades y sus metodos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Tengo un problema con mi entidad y es que no me carga una relacion como una coleccion o eso creo. Mi entidad: Código PHP: <?php ...
  #1 (permalink)  
Antiguo 15/04/2012, 15:17
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 9 años, 3 meses
Puntos: 0
Doctrine 2: Creando las entidades y sus metodos

Tengo un problema con mi entidad y es que no me carga una relacion como una coleccion o eso creo.

Mi entidad:
Código PHP:
<?php
namespace Entidad
;

use 
DoctrineCommonCollectionsArrayCollection;

/** 
 * @Entity(repositoryClass="Repositorio\categoriaRepositorio")
 * @Table(name="categorias")
 **/
class Categoria
{
    
/** @Id @GeneratedValue(strategy="AUTO") @Column(type="integer") **/
    
protected $id;
    
/** @OneToOne(targetEntity="Categoria", inversedBy="categoriashijo" )
     *  @JoinColumn(name="fkidcategoria", referencedColumnName="id") **/ 
    
protected $categoriapadre;
    
/** @OneToMany(targetEntity="Categoria", mappedBy="categoriapadre") **/
    
protected $categoriashijo;
    
/** @OneToMany(targetEntity="Producto", mappedBy="categoria") **/
    
protected $productos;
    
/** @Column(type="string") **/
    
protected $nombre;
    
/** @Column(type="string") **/
    
protected $urlrelativa;
    
/** @Column(type="text") **/
    
protected $descripcion;
    
/** @Column(type="boolean") **/
    
protected $visible;
    
/** @Column(type="boolean") **/
    
private $activo;
    
    public function 
__constructCategoria $categoria null )
    {
        if ( 
$categoria instanceof Categoria )
            
$this->setCategoriaPadre$categoria );
        
$this->categoriashijo = new ArrayCollection();
        
$this->productos = new ArrayCollection();
    }

    public function 
setId$valor ){
        
$this->id = (int)$valor;
    }
    public function 
getId(){
        return 
$this->id;
    }
    public function 
setCategoriaPadreCategoria $categoria ){
        
$this->categoriapadre $categoria;
        
$categoria->addCategoriaHijo($this);
    }
    public function 
getCategoriaPadre(){
        return 
$this->categoriapadre;
    }
    public function 
addCategoriaHijoCategoria $categoria ){
        
$this->getCategoriasHijo()->add$categoria );
        
$categoria->setCategoriaPadre$this );
    }
    public function 
getCategoriasHijo(){
        return 
$this->categoriashijo;
    }
    public function 
addProductoProducto $producto ){
        
$this->getProductos()->add($producto);
        
$producto->setCategoria($this);
    }
    public function 
getProductos(){
        
$this->productos;
    }
    public function 
setNombre$valor ){
        
$this->nombre = (string)$valor;
    }
    public function 
getNombre(){
        return 
$this->nombre;
    }
    public function 
setUrlRelativa$valor ){
        
$this->urlrelativa = (string)$valor;
    }
    public function 
getUrlRelativa(){
        return 
$this->urlrelativa;
    }
    public function 
setDescripcion$valor ){
        
$this->descripcion = (string)$valor;
    }
    public function 
getDescripcion(){
        return 
$this->descripcion;
    }
    public function 
setVisible$valor ){
        
$this->visible = (boolean)$valor;
    }
    public function 
getVisible(){
        return 
$this->visible;
    }
    public function 
setActivo$valor ){
        
$this->activo = (boolean)$valor;
    }
    public function 
getActivo(){
        return 
$this->activo;
    }
}
?>
Yo me traigo de la base de datos un categoria que tiene varias categorias hijo, osea, deberia de cargarme la colecion de categorias hijo en el atributo "categoriashijo" pero no me lo hace, simplemente me carga uno, el ultimo hijo.

¿ Como tengo que hacerlo ?

Gracias, un saludo!

EDITADO:
Ya encontre el error, tenia mal definida la entidad
  #2 (permalink)  
Antiguo 16/04/2012, 03:00
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Doctrine 2: Creando las entidades y sus metodos

He modificado la relacion, la habia definido mal y tambien he implementado mejor los metodos. Me ha quedado asi:
Código PHP:
...
     
/**
     * @ManyToOne(targetEntity="Categoria", inversedBy="categoriashijo")
     * @JoinColumn(name="fkidcategoria", referencedColumnName="id")
     */
    
protected $categoriapadre;
    
/** @OneToMany(targetEntity="Categoria", mappedBy="categoriapadre") **/
    
protected $categoriashijo;
...
    public function 
setCategoriaPadreCategoria $categoria ){
        if ( !(
$categoria->getCategoriasHijo()->contains$this )) )
        {
            
$this->categoriapadre $categoria;
            
$categoria->addCategoriaHijo($this);    
        }
    }
    public function 
getCategoriaPadre(){
        return 
$this->categoriapadre;
    }
    public function 
addCategoriaHijoCategoria $categoria ){
        if ( !(
$this->getCategoriasHijo()->contains$categoria )) )
        {
            
$this->getCategoriasHijo()->add$categoria );
            
$categoria->setCategoriaPadre$this );
        }
    }
    public function 
getCategoriasHijo(){
        return 
$this->categoriashijo;
    }
... 

Última edición por chemajmb; 16/04/2012 a las 06:28

Etiquetas: creando, doctrine, entidades, metodos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:04.