J'ai une entité de compte qui contient une contrainte de clé étrangère pour une entité utilisateur et une entité client.Validation de l'entité unique
J'essaie de valider l'id du client est numérique et non null. Plus la contrainte unique de user_id et customer_id.
Mon problème la contrainte de classe UniqueEntity est déclenchée quel que soit le résultat du type customer_id: résultat de validation numérique. Qui lance un 500 car la colonne customer_id est un entier.
Ce que je dois faire est, valider le customer_id est un id valide (numérique et non null) avant de vérifier la contrainte unique. Ou y a-t-il un autre moyen d'éviter que symfony/doctrine se rende à la base de données pour tester un identifiant invalide?
Ma config de validation,
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.
Je devrais ajouter ceci est un appel d'api, je ne sers pas le formulaire d'un modèle de symfony. L'envoi d'une chaîne comme "test" en tant qu'ID client renvoie ces erreurs sql. Je ne vois pas le point de l'appel supplémentaire db si ce n'est pas nécessaire. Serait bien si vous pouviez définir un arbre de validations dépendantes. – shapeshifter
Je crois que cela pourrait être possible avec des séquences de groupe. Peut-être que cela vous aide: http://symfony.com/doc/current/book/validation.html#group-sequence – Syjin