我有一個Session
實體,它具有整數$num
屬性。兩個或更多個會話可以具有相同的$num
值。 A Session
可能屬於若干Group
實體。如何防止arraycollection中的重複值?
A Group
也可以附加幾個會話。創建Group
時,用戶可以將其包含的會話分配到ArrayCollection
,但一個組不能有兩個具有相同$num
值的會話。
如何使用Symfony表單組件強制執行此限制,特別是使用CollectionType
字段類型?
編輯:
這裏的(單向)許多一對多的映射,從集團會議:
# Group.orm.yml
manyToMany:
sessions:
targetEntity: Session
joinTable:
name: sessiongroups_sessions
joinColumns:
group_id:
referencedColumnName: id
inverseJoinColumns:
session_num:
referencedColumnName: num
我在inverseJoinColumn
(而不是id
)設置$num
作爲參考列,所以sessiongroups_sessions
表永遠不會有兩行或多行具有相同$num
值的相同組ID引用會話。
這是從數據庫的角度來看
罰款(編輯:顯然不是,我認爲這將沒有想出來工作),我需要知道我可以在形式執行此,用戶指定的會議組。
我知道存在一個約束,稱爲Collection
,但它需要爲集合的每個鍵指定驗證程序。我知道我可以建立形式的會議添加到這樣的集合:
$group = new Group();
$form = $this->createFormBuilder($group)->add('sessions', CollectionType::class,
array('entry_type' => EntityType::class, 'entry_options' => array('class' => AppBundle:Group));
如何指定這裏約束確保集合從不保存具有相同$num
值兩會?
請首先顯示一些代碼。這是你在這方面的第二個問題。 – colburton
我甚至不知道從哪裏開始。我可以發佈會話和組之間多對多關聯的映射信息(如果有幫助的話)@colburton – MrWarlock616
symfony中的表單組件太多了,以至於讓我感到困惑 – MrWarlock616