Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/04/2013, 16:54
jburgui
 
Fecha de Ingreso: abril-2013
Mensajes: 12
Antigüedad: 11 años
Puntos: 1
ArrayCollection vacio.

muy buenas.
solicito ayuda para intentar resolver un problema que llevo como 6 horas intentando resolver.
Estoy realizando un formulario embebido 1:n. y estoy en el siguiente estado:

En la web me sale bien el formulario principal y puedo agregar y eliminar los formularios embebidos perfectamente.
Ahora bien, en el momento de de guardarlo todo, me guarda el principal pero los embebidos no.
el codigo del controlador createAction es el siguiente:

Código PHP:
$entity  = new Estudio();
        
$form $this->createForm(new EstudioType(), $entity);
        
$form->bind($request);

        if (
$form->isValid()) {
            
$em $this->getDoctrine()->getManager();
            
$em->persist($entity);
            
$em->flush();
            foreach(
$entity->getPartesEstudio() as $parte){
                
$parte->setIdEstudio($entity);
                
$em->persist($parte);//  
            
}
            
$em->flush(); 
He comprobado que dentro del foreach no entra y que $entity->getPartesEstudio() no devuelve null. pero ya no sque más probar.

La clase estudio es:

Código PHP:
<?php

namespace proyectobackendBundleEntity
;
use 
DoctrineCommonCollectionsArrayCollection;

use 
DoctrineORMMapping as ORM;

/**
 * Estudio
 */
class Estudio
{
    
/**
     * @var integer
     */
    
private $id;

    
/**
     * @var string
     */
    
private $nombre;

    
/**
     * @var integer
     */
    
private $numPartes;

    
/**
     * @var integer
     */
    
private $numDatosEstudio;

    
/**
     * @var string
     */
    
private $descripcion;

    
/**
     * @var boolean
     */
    
private $activa 0;

    protected 
$partesEstudio;

    
    public function 
__construct()
    {
        
$this->partesEstudio = new ArrayCollection();
    }
    
/**
     * Get id
     *
     * @return integer 
     */
    
public function getId()
    {
        return 
$this->id;
    }

    
/**
     * Set nombre
     *
     * @param string $nombre
     * @return Estudio
     */
    
public function setNombre($nombre)
    {
        
$this->nombre $nombre;
    
        return 
$this;
    }

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

    
/**
     * Set numPartes
     *
     * @param integer $numPartes
     * @return Estudio
     */
    
public function setNumPartes($numPartes)
    {
        
$this->numPartes $numPartes;
    
        return 
$this;
    }

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

    
/**
     * Set numDatosEstudio
     *
     * @param integer $numDatosEstudio
     * @return Estudio
     */
    
public function setNumDatosEstudio($numDatosEstudio)
    {
        
$this->numDatosEstudio $numDatosEstudio;
    
        return 
$this;
    }

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

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

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

    
/**
     * Set activa
     *
     * @param boolean $activa
     * @return Estudio
     */
    
public function setActiva($activa)
    {
        
$this->activa $activa;
    
        return 
$this;
    }

    
/**
     * Get activa
     *
     * @return boolean 
     */
    
public function getActiva()
    {
        return 
$this->activa;
    }
        
     public function 
setPartesEstudio(ArrayCollection  $partesEstudio null)
    {
        
$this->partesEstudio $partesEstudio;
    }
    public function 
getPartesEstudio()
    {
        return 
$this->partesEstudio;
    }
    public function 
__toString (){
        return 
$this->nombre;
    }
}
y la clase parteEstudio es:

Código PHP:
<?php

namespace proyectobackendBundleEntity
;

use 
DoctrineORMMapping as ORM;

/**
 * ParteEstudio
 */
class ParteEstudio
{
    
/**
     * @var integer
     */
    
private $id;

    
/**
     * @var string
     */
    
private $nombre;

    
/**
     * @var integer
     */
    
private $numOrden;

    
/**
     * @var integer
     */
    
private $numPreguntas;

    
/**
     * @var string
     */
    
private $titulo;

    
/**
     * @var boolean
     */
    
private $guardarTiempoRespuesta 0;

    
/**
     * @var string
     */
    
private $tipoTratamientoDatos;

    
/**
     * @var integer
     */
    
private $numPreguntasDePrueba;

    
/**
     * @var \proyecto\backendBundle\Entity\Estudio
     */
    
private $idEstudio;

    
/**
     * @var \proyecto\backendBundle\Entity\TipoPregunta
     */
    
private $idTipoPregunta;


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

    
/**
     * Set nombre
     *
     * @param string $nombre
     * @return ParteEstudio
     */
    
public function setNombre($nombre)
    {
        
$this->nombre $nombre;
    
        return 
$this;
    }

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

    
/**
     * Set numOrden
     *
     * @param integer $numOrden
     * @return ParteEstudio
     */
    
public function setNumOrden($numOrden)
    {
        
$this->numOrden $numOrden;
    
        return 
$this;
    }

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

    
/**
     * Set numPreguntas
     *
     * @param integer $numPreguntas
     * @return ParteEstudio
     */
    
public function setNumPreguntas($numPreguntas)
    {
        
$this->numPreguntas $numPreguntas;
    
        return 
$this;
    }

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

    
/**
     * Set titulo
     *
     * @param string $titulo
     * @return ParteEstudio
     */
    
public function setTitulo($titulo)
    {
        
$this->titulo $titulo;
    
        return 
$this;
    }

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

    
/**
     * Set guardarTiempoRespuesta
     *
     * @param boolean $guardarTiempoRespuesta
     * @return ParteEstudio
     */
    
public function setGuardarTiempoRespuesta($guardarTiempoRespuesta)
    {
        
$this->guardarTiempoRespuesta $guardarTiempoRespuesta;
    
        return 
$this;
    }

    
/**
     * Get guardarTiempoRespuesta
     *
     * @return boolean 
     */
    
public function getGuardarTiempoRespuesta()
    {
        return 
$this->guardarTiempoRespuesta;
    }

    
/**
     * Set tipoTratamientoDatos
     *
     * @param string $tipoTratamientoDatos
     * @return ParteEstudio
     */
    
public function setTipoTratamientoDatos($tipoTratamientoDatos)
    {
        
$this->tipoTratamientoDatos $tipoTratamientoDatos;
    
        return 
$this;
    }

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

    
/**
     * Set numPreguntasDePrueba
     *
     * @param integer $numPreguntasDePrueba
     * @return ParteEstudio
     */
    
public function setNumPreguntasDePrueba($numPreguntasDePrueba)
    {
        
$this->numPreguntasDePrueba $numPreguntasDePrueba;
    
        return 
$this;
    }

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

    
/**
     * Set idEstudio
     *
     * @param \proyecto\backendBundle\Entity\Estudio $idEstudio
     * @return ParteEstudio
     */
    
public function setIdEstudio(proyectobackendBundleEntityEstudio $idEstudio null)
    {
        
$this->idEstudio $idEstudio;
    
        return 
$this;
    }

    
/**
     * Get idEstudio
     *
     * @return \proyecto\backendBundle\Entity\Estudio 
     */
    
public function getIdEstudio()
    {
        return 
$this->idEstudio;
    }

    
/**
     * Set idTipoPregunta
     *
     * @param \proyecto\backendBundle\Entity\TipoPregunta $idTipoPregunta
     * @return ParteEstudio
     */
    
public function setIdTipoPregunta(proyectobackendBundleEntityTipoPregunta $idTipoPregunta null)
    {
        
$this->idTipoPregunta $idTipoPregunta;
    
        return 
$this;
    }

    
/**
     * Get idTipoPregunta
     *
     * @return \proyecto\backendBundle\Entity\TipoPregunta 
     */
    
public function getIdTipoPregunta()
    {
        return 
$this->idTipoPregunta;
    }
}
Gracias de antemano y un saludo!!