Validation 唯一实体的验证

Validation 唯一实体的验证,validation,symfony,doctrine-orm,Validation,Symfony,Doctrine Orm,我有一个帐户实体,其中包含用户实体和客户实体的外键约束 我正在尝试验证客户id是否为数字且不为空。加上用户id和客户id的唯一约束 我的问题是,不管customer_id type:numeric validation result的结果如何,都会触发类约束uniquentity。它抛出一个500,因为customer\u id列是一个整数 我需要做的是,在检查唯一约束之前,验证customer_id是否为有效id(数字且不为null)。或者有没有其他方法可以避免symfony/doctor去d

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

我正在尝试验证客户id是否为数字且不为空。加上用户id和客户id的唯一约束

我的问题是,不管customer_id type:numeric validation result的结果如何,都会触发类约束uniquentity。它抛出一个500,因为customer\u id列是一个整数

我需要做的是,在检查唯一约束之前,验证customer_id是否为有效id(数字且不为null)。或者有没有其他方法可以避免symfony/doctor去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.
应该在这里解决你的问题。类似的方法应该会奏效:

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
检查此实体的其他约束。

我应该补充一点,这是一个api调用,我不使用symfony模板提供表单。将类似“test”的字符串作为客户id发送会抛出这些sql错误。如果不需要,我看不出额外的db调用有什么意义。如果你能定义一个依赖验证树,那就太好了。我相信这在分组序列中是可能的。也许这对您有帮助:如果基本组失败,帐户组将无法运行?