Symfony2实体验证 - 一个必须是真的

时间:2013-09-10 15:34:45

标签: entity-framework symfony

我对Symfony的验证有问题。我有一个User类型的表单,用户会映射其他一些内容(例如AddressesPhone等。)

现在我想强制用户的创建者将Addresses / Phones中的一个作为主要成员(实体有一个字段)。

我该如何解决这个问题?因此,只有OneToMany实体中的一个(Addresses之一)需要是主要实体。并确保它总是至少一个。

1 个答案:

答案 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;
}