2016-05-12 14 views
1

私はsymfony 2のdoctrineに関連するエンティティに基づいてフォームを作成しようとしています。私はTematica、Personal、Hilo、Consultante、Consulta、Consulta_Asignatura、Asignaturaという異なるエンティティを持っています。私はすべての私のデータを保持するにはかかわらず、エンティティHilo PersonalとTematicaにいくつかの問題があります。 私のフォームでは、選択した入力を表示する必要があります。すべての "Enunciado"行を持ち、後でこの選択入力で選択したオプションの電子メールを復元する必要があります。 私のコードを共有します。私は誰かが私を助けることを願っています。あなたは、このプロセスを見ることができるのと同じ方法でリカバリ値select imput関連エンティティ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 */ 

私は個人的なクラスyの電子メールで生成された選択フィールドを取得Tematica_soporteのEnunciadoを表示する必要がありますクラス。 Thax

+0

は、このようにTematicaSoporte内のメソッドを追加して十分だった: 'パブリック関数getEnunciado(){ リターンます$ this-> getTematicasSoporte()[0] - > getEnunciado(); } ' – drj00003

答えて

0

は、このようにTematicaSoporte内部のメソッドを追加して十分だった:

public function getEnunciado(){ return $this->getTematicasSoporte()[0]->getEnunciado(); } 
関連する問題