Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Error en Create pero no en update, no logro ver el problema

Estas en el tema de Error en Create pero no en update, no logro ver el problema en el foro de Symfony en Foros del Web. Buenas gente. Estoy insertando un dato simple con un formulario y me devuelve un error que no tendría sentido de acuerdo a como están definidas ...
  #1 (permalink)  
Antiguo 17/03/2014, 12:46
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Sonrisa Error en Create pero no en update, no logro ver el problema

Buenas gente.

Estoy insertando un dato simple con un formulario y me devuelve un error que no tendría sentido de acuerdo a como están definidas las entidades que manejo. Incluso el mismo formulario funciona para el update pero no en el insert ¿?

Alguno ve algo que pueda servir para orientarme?

Tengo lo siguiente:

Formulario:
Código PHP:
class ConvcomisType extends AbstractType
{
    public function 
buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder
            
->add('ccconvid''entity', array('class' => 'Proyecto\ComisionBundle\Entity\Convencional',
                
'label' => 'Convencional ',
                
'required' => true,
                
'query_builder' => function(DoctrineORMEntityRepository $er ) {
                    return 
$er->createQueryBuilder('v')
                    ->
orderBy('v.conv_nombre''ASC')
                    ;
                  }))
            ->
add('cccomid''entity', array('class' => 'Proyecto\ComisionBundle\Entity\Comision',
                
'label' => 'Comision ',
                
'required' => true,
                
'query_builder' => function(DoctrineORMEntityRepository $er ) {
                    return 
$er->createQueryBuilder('v')
                    ->
orderBy('v.com_descripcion''ASC')
                    ;
                  }))
            ->
add('cccargoid')
            .....
        ;
    }

    public function 
setDefaultOptions(OptionsResolverInterface $resolver)
    {
        
$resolver->setDefaults(array(
            
'data_class' => 'Proyecto\ComisionBundle\Entity\Convcomis'
        
));
    }

    public function 
getName()
    {
        return 
'proyecto_comisionbundle_convcomistype';
    }

La entidad Convcomis (Asocia convencional con comision)
Código PHP:

/**
 * Conv_comis
 *
 * @ORM\Table(name="CONV_COMIS")
 * @ORM\Entity
 */
class Convcomis {
    
/**
     * @var integer
     * @ORM\Column(name="CC_ID", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="SEQUENCE")
     */
    
private $id;
    
    
/**
     * @var \ccconvid
     *
     * @ORM\ManyToOne(targetEntity="Convencional")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="CC_CONV_ID", referencedColumnName="CONV_ID")})
     */ 
    
private $ccconvid;
    
    
/**
     * @var \cccomid
     *
     * @ORM\ManyToOne(targetEntity="Comision")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="CC_COM_ID", referencedColumnName="COM_ID")})
     */
    
private $cccomid;
    
    
/**
     * @var \cccargoid
     *
     * @ORM\ManyToOne(targetEntity="Cargo")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="CC_CARGO_ID", referencedColumnName="CARGO_ID")})
     */
    
private $cccargoid;
    
  ...
    
    
/**
     * Set ccconvid
     * @param integer $ccconvid
     * @return Convcomis
     */
    
public function setCcconvid($ccconvid) {
        
$this->ccconvid$ccconvid;
        return 
$this;
    }
    
/**
     * Get ccconvid
     * @return string
     */
    
public function getCcconvid(){
        return 
$this->ccconvid;
    }
    
    
/**
     * Set cccomid
     * @param integer $cccomid
     * @return Convcomis
     */
    
public function setCccomid($cccomid) {
        
$this->ccconvid$cccomid;
        return 
$this;
    }
    
/**
     * Get cccomid
     * @return string
     */
    
public function getCccomid(){
        return 
$this->cccomid;
    }
    
    
    
/**
     * Set cccargoid
     * @param integer $cccargoid
     * @return Convcomis
     */
    
public function setCccargoid($cccargoid) {
        
$this->cccargoid$cccargoid;
        return 
$this;
    }
    
/**
     * Get c_carg_id
     * @return string
     */
    
public function getCccargoid(){
        return 
$this->cccargoid;
    }
    
    ...
    }

Entidad Convencional:

Código PHP:
/**
 * Convencional
 *
 * @ORM\Table(name="CONVENCIONAL")
 * @ORM\Entity
 */
class Convencional
{
    
/**
     * @var integer
     * @ORM\Column(name="CONV_ID", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="SEQUENCE")
     */
    
private $id;
    
    
/**
     * @var string
     * @ORM\Column(name="CONV_NOMBRE", type="string")
     */
    
private $conv_nombre;
    
    
/**
     * @var string
     * @ORM\Column(name="CONV_APELLIDO", type="string")
     */
    
private $conv_apellido;
         
    ...
    
    
    
/**
     * Get id
     * @return integer 
     */
    
public function getId(){
        return 
$this->id;
    }
    
    
/**
     * Get conv_nombre
     * @return string
     */
    
public function getConvnombre(){
        return 
$this->conv_nombre;
    }
    
/**
     * Set conv_nombre
     * @param integer @conv_nombre
     * @return Convencional
     */
    
public function setConvnombre($conv_nombre){
        return 
$this->conv_nombre=$conv_nombre;
    }
    
/**
     * Get conv_apellido
     * @return string
     */
    
public function getConvapellido(){
        return 
$this->conv_apellido;
    }
    
    
/**
     * Set conv_apellido
     * @param integer @conv_apellido
     * @return Convencional
     */
    
public function setConvapellido($conv_apellido){
        return 
$this->conv_apellido=$conv_apellido;
    }
    
...
    

En el controlador: Función Update (Que si funciona)
Código PHP:
{
        
$em $this->getDoctrine()->getManager("comision");

        
$entity $em->getRepository('ProyectoComisionBundle:Convcomis')->find($id);

        if (!
$entity) {
            throw 
$this->createNotFoundException('Unable to find Convcomis entity.');
        }

        
$deleteForm $this->createDeleteForm($id);
        
$editForm $this->createForm(new ConvcomisType(), $entity);
        
$editForm->bind($request);

        if (
$editForm->isValid()) {
            
$em->persist($entity);
            
$em->flush();

            return 
$this->redirect($this->generateUrl('conv_comis_show', array('id' => $id)));
        }

        return 
$this->render('ProyectoComisionBundle:Conv_comis:edit.html.twig', array(
            
'entity'      => $entity,
            
'edit_form'   => $editForm->createView(),
            
'delete_form' => $deleteForm->createView(),
        ));
    } 
Función Create (da error)

Código PHP:
public function createAction(Request $request)
    {
        
$em $this->getDoctrine()->getManager("comision");
        
$entity  = new Convcomis();
        
$form $this->createForm(new ConvcomisType(), $entity);
        
$form->bind($request);
        
//$descrip = $form['ccconvid']->getData()->getConvapellido();
        //getId()
        //echo $descrip;
        //exit;

        
if ($form->isValid()) {
            
            
$entity->setCcconvid($form['ccconvid']->getData());
            
$entity->setCccomid($form['cccomid']->getData());
            
$entity->setCccargoid($form['cccargoid']->getData());
            
$entity->setCcfecdesde($form['ccfecdesde']->getData());
            
$entity->setCcfechasta($form['ccfechasta']->getData());
            
//echo $form['ccconvid']->getData()->getId();
            //exit;
            
$em->persist($entity);
            
$em->flush();

            return 
$this->redirect($this->generateUrl('conv_comis_show', array('id' => $entity->getId())));
        }

        return 
$this->render('ProyectoComisionBundle:Conv_comis:new.html.twig', array(
            
'entity' => $entity,
            
'form'   => $form->createView(),
        ));
    } 
Cita:
El error que arroja:
Found entity of type Proyecto\ComisionBundle\Entity\Comision on association Proyecto\ComisionBundle\Entity\Convcomis#ccconvid, but expecting Proyecto\ComisionBundle\Entity\Convencional
El asunto es que incluso cuando imprimo echo $form['ccconvid']->getData(); muestra los datos del Convenciona, no de la comisión como dice el error.

Es más, asocié campo a campo para descartar errores que pudieran darse al realizar el bind($request)

La verdad estoy trabada y no le encuentro la vuelta. Muchas gracias de antemano por sus respuestas.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 17/03/2014, 15:00
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Error en Create pero no en update, no logro ver el problema

Ya di con el error después de repasar varias veces:


/**
* Set cccomid
* @param integer $cccomid
* @return Convcomis
*/
public function setCccomid($cccomid) {
$this->ccconvid= $cccomid;
return $this;
}


Estaba sobreescribiendo el valor de ccconvid en el Setter de cccomid

Gracias a los que se han tomado la molestia de leer mi problema, ya está solucionado.
__________________
Why can't we not be sober?
www.partitorium.com.ar

Etiquetas: create, update
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:28.