Bonjour,

J'ai un soucis avec la génération d'un élément EntityType de mon formulaire je me retrouve avec les valeurs de mon entité en double dans le champ de selection.

J'ai donc une entité Utilisateur qui possède un prenom, un nom, un trigramme, et une route de validation (chaine hierarchique).

Mon formulaire représente une Commande l'utilisateur étant une information de celle ci.

Dans CommandeType dans mon buildForm j'ai donc:

$builder
            ->add('utilisateur', EntityType::class, array(
                'class' => 'App\Entity\Utilisateur',
                'label' => 'Utilisateur',
                'placeholder' => '',
                'query_builder' => function(UtilisateurRepository $entityRepository)
                {
                    return $entityRepository->createAlphabeticalQueryBuilder();
                }
            ))
            ->add(...

Quand je fais ca je me retrouve avec tous mes utilisateurs en base par ordre alphabétique mais en doublon (le but du query builder c'était de mettre la liste par ordre alpha. De base sans le querybuilder tout est ok mais dès que j'ajoute celui ci ca double les valeurs.

public function createAlphabeticalQueryBuilder()
    {
        return $this->createQueryBuilder('utilisateur')
            ->orderBy('utilisateur.nom', 'ASC');
    }
    // 

Pouvez vous me dire comment faire en sorte de ne pas dupliquer mes valeurs dans le champs de formulaire?

Merci d'avance :) !

3 réponses


clymB
Auteur
Réponse acceptée

Bon je viens de réaliser que c'était juste des doublons en base... avant le tri je ne m'en apercevais pas car trop de nom ...

Désolé du dérangement.

Dans ton entité,
au dessu de class ...... ajoute remplaçant les "----" par le champs qui doit être unique

/**
 * @ORM\Entity
 * @UniqueEntity("____")
 */
clymB
Auteur

Merci pour ta réponse j'ai un soucis avec cette annotation :
[Semantical Error] The annotation "@Doctrine\ORM\Mapping\UniqueEntity" in class App\Entity\Utilisateur does not exist, or could not be auto-loaded

/**
 * @ORM\Entity(repositoryClass="App\Repository\UtilisateurRepository")
 * @UniqueEntity("nom")
 */
class Utilisateur
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=6)
     */
    private $trigramme;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $prenom;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $nom;

    /**
     * @ORM\ManyToOne(targetEntity="RouteValidation", inversedBy="utilisateurs")
     */
    private $routevalidation;

    ... getter setter etc