我对Symfony的验证有问题。我有一个User
类型的表单,用户会映射其他一些内容(例如Addresses
,Phone
等。)
现在我想强制用户的创建者将Addresses
/ Phones
中的一个作为主要成员(实体有一个字段)。
我该如何解决这个问题?因此,只有OneToMany实体中的一个(Addresses
之一)需要是主要实体。并确保它总是至少一个。
答案 0 :(得分:1)
一种方法是向User
实体添加一个字段,以一对一的方式指向主要地址并使其成为必需。
另一种方法是create a custom validator循环访问用户地址并验证其中至少有一个被标记为主要地址。
或者你可以使用True constraint:
/**
* @True
*/
public function isThereOnePrimaryAddress()
{
$primes = 0;
foreach ($this->getAddresses() as $address) {
if ($address->isPrimary()) {
$primes++;
}
}
if (1 === $primes) {
return true;
}
return false;
}