Aller au contenu

API Platform

Dans les entités

Attributs #[ORM\UniqueConstraint] et #[UniqueEntity]

#[ORM\UniqueConstraint] — niveau base de données
- Génère une contrainte UNIQUE directement dans le schéma SQL
- Protège contre les doublons au niveau DB (dernier rempart)
- Ne renvoie pas une erreur de validation propre — si la contrainte est violée, Doctrine lève une exception UniqueConstraintViolationException non gérée

#[UniqueEntity] — niveau validation Symfony - Effectue un SELECT avant l'INSERT pour vérifier l'unicité - Renvoie une erreur de validation propre (422 avec message lisible dans l'API) - Ne crée rien en base de données

S'il manque le #[UniqueEntity] et que l'on tente de créer un doublon via l'API, au lieu d'un 422 avec un message clair, on obtiendra une exception 500 non gérée quand Doctrine touche la DB.

Si on a les deux, ce qui est la bonne pratique : UniqueConstraint comme filet de sécurité DB, et UniqueEntity pour une réponse API propre.