Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/07/2013, 07:24
mauro89x
 
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Problema con relaciones en symfony2

Hola! tengo un problema con unas entidades y sus asociaciones,
Les comento, tengo una entidad llamada CategoriaItem, en la bd figura compuesta por
id, descripcion, categoria_padre_id
La idea es tener una categoria que tenga opcionalmente otras categorias de las que depende (una cardinalidad de (0,n) ), por ejemplo
Si tengo Root como categoria, podria tener categoria hija, a "hija_root" y esto se veria reflejado asi en la base de datos
id --> 1
descripcion --> Root
categoria_padre_id--> NULL


id-->2
descripcion-->hija_root
categoria_padre_id = 1

O sea la categoria padre id de una categoria seria el id de su padre.

<?php

namespace P2012\SistemaCvBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
* CategoriaItem
*
* @ORM\Table(name="categoria_item")
* @ORM\Entity
*
*
*/
class CategoriaItem
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\OneToMany(targetEntity="CategoriaItem", mappedBy="categoriaPadreId")
*
*/

protected $id;


/**
* @var string
*
* @ORM\Column(name="descripcion", type="string", length=255, nullable=false)
*/
protected $descripcion;


/**
*
* @ORM\ManyToOne(targetEntity="CategoriaItem", inversedBy="id", cascade={"remove"})
*/
protected $categoriaPadreId;

public function __construct() {
$this->id = new ArrayCollection();
}



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

/**
* Set descripcion
*
* @param string $descripcion
* @return CategoriaItem
*/
public function setDescripcion($descripcion)
{
$this->descripcion = $descripcion;

return $this;
}

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

/**
* Set categoriaPadreId
*
* @param integer $categoriaPadreId
* @return CategoriaItem
*/
public function setCategoriaPadreId($categoriaPadreId)
{
$this->categoriaPadreId = $categoriaPadreId;

return $this;
}

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


public function __toString()
{
return $this->descripcion;
}
}
Inicialmente la represente usando ManyToOne y OneToMany, diciendo que categoria padre id tiene una relacion de uno a muchos con "id" e id tiene una relacion con muchas categorias hijas. El tema de esto es que si intento borrar la clase supongamos root, no me borraba las q cuelgan de esa clase. Intente usando ahora manytomany pero no me funciona bien. Revise la documentacion, pero la verdad no consegui hacerlo andar.
Alguna idea?
Muchas grax saludos!