Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony] Forcer la valeur d'un champ id

Sujet résolu
    6 mai 2021 à 14:58:30

    Bonjour,

    J'aimerais savoir s'il est possible de forcer la valeur d'un champ id à la création d'une entrée ?

    En procédant de cette façon :

    $society = new Society();
    $society->setId($customId);
    /* filling other fields */
    $em->persist($society);
    $em->flush();

    L'ID reste auto généré et prend la valeur à la suite de la dernière entrée créée.

    Voici ma propriété ID pour cette entité :

    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    (Je ne peux pas retirer la propriété GeneratedValue car des entrées existent déjà dans ma bdd avec des relations vers cette entité)

    Comment puis-je procéder sans créer d'autre champ ?

    Merci par avance.

    • Partager sur Facebook
    • Partager sur Twitter
      6 mai 2021 à 15:06:02

      Salut

      Pour ce faire, il faut changer la stratégie de génération d'ID. Par défaut, comme tu l'as constaté, c'est un ID auto-généré qui est utilisé. Il faut spécifier strategy="NONE" en paramètre de l'annotation GeneratedValue (ou simplement enlever l'annotation), et du coup tu es totalement responsable de définir le champ.

      • Partager sur Facebook
      • Partager sur Twitter
        6 mai 2021 à 15:10:30

        Bonjour Ymox, merci pour ton message.

        Malheureusement j'ai besoin de garder la stratégie AUTO.

        Je viens finalement de trouver une solution pour mon cas particulier (après une énième recherche Google :D) et qui fonctionne très bien : changer la stratégie comme tu le proposais, mais uniquement au moment de flush, et donc sans changer le comportement général. :magicien:

        L'explication ici pour ceux qui en auraient besoin : https://melodies.io/fr/blog/doctrine/forcer-un-id-strategie-auto-avec-doctrine

        Je passe en résolu.

        • Partager sur Facebook
        • Partager sur Twitter

        [Symfony] Forcer la valeur d'un champ id

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown