UniqueEntity et méthode de particulière du repository

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous !

J'ai un comportement un peu ennuyeux que j'aimerais vous soumettre.

Histoire d'alléger un peu le nombre de requêtes dans mes pages, j'ai passé sur un grand nombre de mes entités pour créer des méthodes findBy et autres (oui, je parle de redéfinition desdites méthodes) qui permettent de récupérer mes entités et leurs objets liés de manière "invisible", tout en conservant à peu de choses près le comportement initial. Justement, c'est le "à peu de choses près" qui pose désormais problème.

J'ai eu besoin de mettre des contraintes d'unicité pour éviter certains doublons. Or, cette contrainte prend en paramètre le nom de la propriété à vérifier, puis utilise la méthode findBy pour savoir si la valeur soumise est déjà présente en base. Or, ma "nouvelle" méthode findBy doit absolument prendre les alias d'objets comme préfixes des propriétés à filtrer (vu que je fais des jointures). Mais si je spécifie ce préfixe dans la contrainte, le champ n'est plus reconnu par la contrainte. Si je ne le spécifie pas, c'est lors de la transformation du DQL en SQL que le champ n'est plus reconnu…

Est-ce que quelqu'un verrait une alternative au renommage de mes méthodes ?

Merci d'avance  :)

Edit

Ouais, en fait, c'est simple : je regarde déjà si j'ai un alias ou non pour traiter les paramètres et leurs placeholders, donc s'il n'y en a pas, je l'ajoute, c'est normalement celui de "l'entité principale"  :-°

Edit 2

Ah, en revanche, surprise ! Je n'ai de message d'erreur que si un des deux champs n'est pas valide, mais le message s'affiche pour les deux champs ou pour aucun…

1
2
3
4
5
6
7
8
My\WonderfulBundle\Entity\Person:
  constraints:
    - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
        fields: emailCanonical
        errorPath: email
    - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
        fields: usernameCanonical
        errorPath: username

Extrait de mon fichier validation.yml

Donc si je tente de saisir un e-mail qui existe déjà, j'ai l'erreur pour les deux champs email et username, alors que si je tente de saisir un nom d'utilisateur déjà enregistré, aucune erreur ne s'affiche — alors que les outils de Symfony me signalent bien une erreur pour le champ username

Edit 3

Apparemment, avec Symfony 3.1.6, ce souci d'affichage est réglé.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte