2016-05-12 1 views
1

J'essaie de créer une forme basée sur mes entités apparentées dans la doctrine de Symfony 2. J'ai différentes entités: Tematica, Personnel, Hilo, Consultante, Consulta, Consulta_Asignatura et Asignatura. J'atteins pour persister toutes mes données, néanmoins avoir quelques problèmes avec les entités Hilo Personal et Tematica. Dans mon formulaire doit montrer select imput, il devrait avoir toutes les lignes "Enunciado" et récupérer plus tard Email de l'option sélectionnée dans cette entrée de sélection. Je vais partager mon code, j'espère que quelqu'un pourra m'aider.Récupérer les valeurs sélectionner les entités liées à la doctrine doctrine symfony 2

class HiloType extends AbstractType 
{ 
    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('consultanteemail', new ConsultanteType(), array ('label' => false)) 
      ->add('personalemail', 'entity', array(
       'label' => 'Personal de Soporte', 
       'class' => 'GuiasDocentes\AppBundle\Entity\Personal', 
       'property' => 'Email', 
       'by_reference' => 'false', 
       'query_builder' => function(PersonalRepository $pr) { 
        $query= $pr->createQueryBuilder('u') 
        ; 
        return $query; 
       }, 
       'empty_value' => 'Elige un perfil de consulta:', 
       )) 
      // ->add('personalemail', new PersonalType(), array ('label' => false)) 
     ; 
    } 
* Personal 
* 
* @ORM\Table(name="personal") 
* @ORM\Entity(repositoryClass="GuiasDocentes\AppBundle\Entity\PersonalRepository") 

class Personal 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="email", type="string", length=50, nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $email; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="nombre", type="string", length=30, nullable=true) 
    */ 
    private $nombre; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="apellidos", type="string", length=50, nullable=true) 
    */ 
    private $apellidos; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="departamento", type="string", length=20, nullable=true) 
    */ 
    private $departamento; 

    /* Customized code */ 
    /** 
    * @ORM\OneToMany(targetEntity="GuiasDocentes\AppBundle\Entity\TematicaSoporte", mappedBy="personalEmail") 
    * @Assert\Valid() 
    */  
    private $tematicasSoporte; 

    public function __constructor(){ 
     $this->tematicasSoporte = new ArrayCollection(); 
     $this->hilos = new ArrayCollection(); 
    } 

    public function addTematicasSoporte(\GuiasDocentes\AppBundle\Entity\TematicaSoporte $tematicaSoporte){ 
     $this->tematicasSoporte[] = $tematicaSoporte; 
     return $this; 
    }  

    public function setTematicasSoporte(\GuiasDocentes\AppBundle\Entity\TematicaSoporte $tematicaSoporte){ 
     $this->tematicasSoporte[] = $tematicaSoporte; 
     return $this; 
    } 

    public function getTematicasSoporte(){ 
     return $this->tematicasSoporte; 
    } 

    /** 
    * @ORM\OneToMany(targetEntity="GuiasDocentes\AppBundle\Entity\Hilo", mappedBy="personalemail") 
    * @Assert\Valid() 
    */  
    private $hilos; 

    public function setHilos(Hilo $hilo){ 
     $this->hilos[] = $hilo; 
     return $this; 
    } 

     public function addHilos(Hilo $hilo){ 
     $this->hilos[] = $hilo; 
     return $this; 
    } 

    public function getHilos(){ 
     return $this->hilos; 
    } 
/** 
* TematicaSoporte 
* 
* @ORM\Table(name="tematica_soporte", indexes={@ORM\Index(name="fk_tematica_soporte_personal1_idx", columns={"personal_email"})}) 
* @ORM\Entity(repositoryClass="GuiasDocentes\AppBundle\Entity\TematicaSoporteRepository") 
*/ 
class TematicaSoporte 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="enunciado", type="text", nullable=true) 
    */ 
    private $enunciado; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="orden", type="integer", nullable=false) 
    */ 
    private $orden; 

    /** 
    * @var \Personal 
    * 
    * @ORM\ManyToOne(targetEntity="Personal", inversedBy="tematicasSoporte", cascade={"ALL"}) 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="personal_email", referencedColumnName="email") 
    * }) 
    */ 
    private $personalEmail; 
/** 
* Hilo 
* 
* @ORM\Table(name="hilo", indexes={@ORM\Index(name="fk_Hilo_Personal1_idx", columns={"personalEmail"}), @ORM\Index(name="fk_Hilo_Consultante1_idx", columns={"consultanteEmail"})}) 
* @ORM\Entity 
*/ 
class Hilo 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var \GuiasDocentes\AppBundle\Entity\Personal 
    * 
    * @ORM\ManyToOne(targetEntity="Personal", inversedBy="hilos", cascade ={"ALL"}) 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="personalEmail", referencedColumnName="email") 
    * }) 
    */ 
    private $personalemail; 

    /** 
    * @var \GuiasDocentes\AppBundle\Entity\Consultante 
    * 
    * @ORM\ManyToOne(targetEntity="Consultante", inversedBy="hilos", cascade ={"ALL"}) 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="consultanteEmail", referencedColumnName="email") 
    * }) 
    */ 
    private $consultanteemail; 


    /* Customized code */ 

    /** 
    * @ORM\OneToMany(targetEntity="GuiasDocentes\AppBundle\Entity\Consulta", mappedBy="hiloid") 
    * @Assert\Valid() 
    */ 
    private $consultas; 

    public function __construct(){ 

     $this->consultas = new ArrayCollection(); 
    } 

    public function setConsultas (Consulta $consulta){ 
     $this->hilos[]=$consulta; 
    } 

    public function addConsulta (\GuiasDocentes\AppBundle\Entity\Consulta $consulta){ 
     $this->hilos[] = $consulta; 
    } 


/* End customized code */ 

De la même façon que vous pouvez voir avec ce processus, je reçois champ de sélection généré par e-mail des besoins de classe personnelle y pour montrer enunciado de Tematica_soporte classe. Thax

+0

était assez avec ajouter une méthode à l'intérieur TematicaSoporte de cette façon: 'la fonction publique getEnunciado() { return $ this-> getTematicasSoporte() [0] -> getEnunciado(); } ' – drj00003

Répondre

0

était assez avec ajouter une méthode à l'intérieur TematicaSoporte de cette façon:

public function getEnunciado(){ return $this->getTematicasSoporte()[0]->getEnunciado(); }