我有一个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