Partage
  • Partager sur Facebook
  • Partager sur Twitter

Héritage de classe et unicité SF6

Sujet résolu
    8 avril 2024 à 17:08:26

    Bonjour,

    J'ai un héritage de classe en mode JOINED

    J'ai donc une classe A qui contient : champ A, B, C et une autre classe B qui contient champs D et champs E

    J'aimerai mettre une unicité sur le champ C mais uniquement sur la classe B, ce champs peut être dupliqué pour la classe A sans importance.

    D'après vous est-ce possible juste en mettant un attribut du type : #[UniqueEntity('C')] directement sur la classe B

    ou est-ce que je dois avoir une colonne C dans chaque entité (auquel cas l'héritage perd un peu son sens)

    A->get(C) === 'test' => multiple rows

    B->get(C) === 'test' => si unique 1 row si multiple error

    -
    Edité par Fredo42210 8 avril 2024 à 17:09:00

    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2024 à 15:49:33

      Salut

      La contrainte d'unicité étant à définir dans l'entité qui va réellement l'utiliser, je pense que cela ne devrait pas être impossible de ne la mettre que dans B. A mon sens, il faudra cependant définir des méthodes "au singulier" pour définir et récupérer "le" C, et peut-être aussi surcharger les méthodes "au pluriel".

      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2024 à 12:44:47

        Merci

        après quelques recherches deux choix s'offre à ma demande :
        - soit passer par doctrine pour overrider l'unicité du champ : #[AttributeOverrides

        - soit passer un index partiel directement en SQL CREATE UNIQUE INDEX my_uniq_index ON A(C)WHERE discr ='B';

        -
        Edité par Fredo42210 16 avril 2024 à 13:00:19

        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2024 à 16:37:22

          Ah, effectivement, je ne pensais qu'au niveau ORM. Si les mappings et du coup la base de données doit elle aussi comprendre cette contrainte, alors oui, #[AttributeOverrides…] ou, peut-être plus pertinemment ici vu qu'on parle d'une relation ? #[AssociationOverrides…].

          • Partager sur Facebook
          • Partager sur Twitter

          Héritage de classe et unicité SF6

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown