2016-07-15 1 views
0

나는 many-to-many 관계가 있습니다. 엔티티 "PROGETTI"에서 는 내가 가지고 :다 대 다 관계가있는 FormType의 CollectionType

엔티티 "Attività"에서
/** 
    * 
    * @var \Doctrine\Common\Collections\ArrayCollection $attivita 
    * 
    * @ORM\ManyToMany(targetEntity="Attivita", inversedBy="progetti",cascade={"persist", "remove" }) 
    * @ORM\JoinTable(name="progetti_attivita", 
    *  joinColumns={@ORM\JoinColumn(name="progetti_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="attivita_id", referencedColumnName="id")} 

    *) 

    */ 
    protected $attivita; 

난이 : 좋아

/** 
    * 
    * @var \Doctrine\Common\Collections\ArrayCollection $progetti 
    * @ORM\ManyToMany(targetEntity="Progetti", mappedBy="attivita") 

    */ 
    protected $progetti; 

합니다. JoinTable "progetti_attivita"에는 "attivita_id"및 "progetti_id"가 있습니다. 이제 JoinTable "progetti_attivita"에 새 필드를 추가하고 "위치"라고했습니다. 그것은 정수입니다.

$builder 
      ->add('nomeProgetto') 
      ->add('descProgetto') 
      ->add('noteProgetto') 
      ->add('attivita', CollectionType::class, array(
        'entry_type' => AttivitaType::class, 
        'allow_add' => true, 

      )); 

확인 :

은 내가 ProgettiType 양식이있다. "progetti"에 대해 "attività"를 모두 표시하는 양식이 있습니다.

내 질문 : "위치"로 정렬 된 "attivita"를 표시하려면 어떻게 양식을 말 할 수 있습니까?

답변

0

당신은 항상 당신의 컬렉션 당신이 당신의 교리 매핑에있는 OrderBy 속성을 추가 할 수 있습니다 주문하려면 다음

http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/tutorials/ordered-associations.html

/** 
* @ManyToMany(targetEntity="Attivita") 
* @OrderBy({"position" = "ASC"}) 
**/ 
private $attivitas; 

는 다른 방법이 PROGETTI에 getAttivitaOrdered 방법을 추가하는 것 엔티티 :

class Progetti 
    getAttivitaOrdered() // return ordered list 

->add('attivitaOrdered', CollectionType::class ... 

게시 할 때 setAttivitaOrdered 메소드가 필요한지 확실하지 않습니다.

귀하의 질문은 실제로 조금 혼란 스럽습니다. 조인 테이블에 속성을 추가하면 ManyToMany 대신 OneToMany 및 ManyToOne 관계를 사용해야합니다. 그래서 몇 가지 조정이 필요할 것입니다.

+0

답장을 보내 주셔서 감사합니다. 문제는 "attivita"가 "progetti"에있을 수 있고 다른 "위치"를 가질 수 있다는 것입니다. 그것은 다른 앨범에있을 수있는 노래 같아요 앨범에 의해 다른 위치를 가질 수 있습니다 – Researcher

+0

물론. Doctrine ManyToMany 관계는 조인 테이블에 추가 속성을 갖는 것을 지원하지 않습니다. 따라서 ProgettiAttivitia 엔티티를 만들고 필요에 따라 OnToMany 관계를 설정해야합니다. 모든 문서에서 논의됩니다. 이것이 일단 구현되면 주문에 대해 걱정하십시오. – Cerad

+1

나는 이해한다! 나는 더 나은 문서를 읽을 것이다. 고맙습니다! – Researcher