Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/11/2014, 10:35
Avatar de Dundee
Dundee
 
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Respuesta: Error al insertar en db entidad relacionada

Cita:
Iniciado por SirDuque Ver Mensaje
Perdon lei mal el Post....

Fijate dentro del if $form->isValid() si el getParentBranch() devuelve null, antes del persist. Si devuelve null, fijate el $form la estaria seteando en null.
He borrado todos los setters y getters de la entidad BRANCH, y los he creado por consola nuevamente, ahora parece funcionar, algo había mal en los setters, pero no sabría por desgracia decir que es lo que era .

Falsa alarma, sigue petando:

Cita:
An exception occurred while executing 'INSERT INTO Branch (book_id, parent_branch, phrase, creator_uid, level) VALUES (?, ?, ?, ?, ?)' with params [{}, {}, "una rama nueva", 22, 1]:
Si hago dentro del $form_isValid() un var_dump($branch); obtengo esto:
Cita:
object(Branch\MainBundle\Entity\Branch)[352] private 'id' => null private 'book_id' => object(Branch\MainBundle\Entity\Book)[354] protected 'branches' => object(Doctrine\ORM\PersistentCollection)[355] private 'snapshot' => array (size=0) ... private 'owner' => &object(Branch\MainBundle\Entity\Book)[354] private 'association' => array (size=15) ... private 'em' => object(Doctrine\ORM\EntityManager)[277] ... private 'backRefFieldName' => string 'book' (length=4) private 'typeClass' => object(Doctrine\ORM\Mapping\ClassMetadata)[287] ... private 'isDirty' => boolean false private 'initialized' => boolean false private 'coll' => object(Doctrine\Common\Collections\ArrayCollection )[356] ... private 'id' => int 1 private 'title' => string 'Eres se una vez un libro público escrito por lo habitantes de un planeta llamado tierra.' (length=89) private 'description' => string 'Libro público escrito por todas las personas que lo desean.' (length=60) private 'public' => int 1 private 'maxLevel' => int 1 private 'parent_branch' => object(Branch\MainBundle\Entity\Branch)[326] private 'id' => int 1 private 'book_id' => int 1 private 'parent_branch' => int 0 private 'phrase' => string 'Es la primera rama' (length=18) private 'creatorUid' => int 1 private 'level' => int 0 private 'phrase' => string 'Es la primera rama' (length=18) private 'creatorUid' => int 1 private 'level' => int 1
La clase que genera el form es esta (igual esto es lo que está mal).

Código PHP:
Ver original
  1. <?php
  2.  
  3. // src/Branch/MainBundle/Form/Phrase/NewPhrase.php
  4. namespace Branch\MainBundle\Form\Phrase;
  5.  
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\FormBuilderInterface;
  8.  
  9. class NewPhrase extends AbstractType
  10. {
  11.     public function buildForm(FormBuilderInterface $builder, array $options)
  12.     {
  13.         $builder
  14.             ->add('phrase', 'text', array('label'  => 'My phrase', 'max_length' => 500))
  15.             ->add('parentBranch', 'entity', array(
  16.             'class' => 'BranchMainBundle:Branch',
  17.             ))
  18.  
  19.             ->add('bookId', 'entity', array(
  20.             'class' => 'BranchMainBundle:Book',
  21.             ))
  22.            
  23.             ->add('creatorUid', 'integer')
  24.             ->add('save', 'submit');
  25.     }
  26.  
  27.     // unique identifier for this form.
  28.     public function getName()
  29.     {
  30.         return 'phrase';
  31.     }
  32. }
Mil gracias
__________________
Videotutoriales de Drupal

Última edición por Dundee; 24/11/2014 a las 10:41