验证唯一实体

时间:2014-05-21 07:06:51

标签: validation symfony doctrine-orm

我有一个帐户实体,其中包含用户实体和客户实体的外键约束。

我尝试验证客户ID是数字而非空。加上user_id和customer_id的唯一约束。

我的问题是,无论customer_id类型的结果如何,类约束UniqueEntity都会被触发:数字验证结果。因为customer_id列是一个整数,所以抛出500。

我需要做的是,在检查唯一约束之前验证customer_id是一个有效的id(数字而不是null)。或者有没有其他方法可以避免symfony / doctrine进入db来测试无效的id?

我的验证配置

MY\ApplicationBundle\Entity\Account:
    constraints:
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
            fields: [ user_id, customer_id ]
            message: Customer Id already exists for User
    properties:
        customer_id:
            - Type:
                type: numeric
                message: Customer Id should be an integer.
            - NotBlank:
                message: Customer cannot be blank.

1 个答案:

答案 0 :(得分:1)

Group Sequences应该在这里解决您的问题。这样的事情应该有效:

MY\ApplicationBundle\Entity\Account:
    group_sequence:
        - Basic
        - Account
    constraints:
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
            fields: [ user_id, customer_id ]
            message: Customer Id already exists for User
    properties:
        customer_id:
            - Type:
                type: numeric
                message: Customer Id should be an integer.
                groups: [Basic]
            - NotBlank:
                message: Customer cannot be blank.
                groups: [Basic]

使用组序列,您可以定义验证的顺序。 Basic检查组Basic的所有约束,Account检查此实体的其他约束。

相关问题