IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

Les ENUM avec Doctrine


Sujet :

ORM PHP

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut Les ENUM avec Doctrine
    Bonjour,

    j'ai écris la classe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    notificationReport:
      actAs: ~
      columns:
        author_id:   { type: integer }
        type:        { type: enum, values: ['Règle métier', 'Erreur', 'Bug', 'Amélioration'] }
        field:       { type: enum, values: ['', 'Nom', 'Budget', 'Valeurs', 'Description', 'Manager', 'Date de début', 'Date de fin'] }
        description: { type: clob }
        criticity:   { type: enum, values: ['1 - Très haute', '2 - Haute', '3 - Moyenne', '4 - Faible', '5 - Très faible'] }
      relations:
        Author:
          class:        sfGuardUser
          local:        author_id
          foreign:      id
          foreignAlias: Reports
    Logiquement, je ne devrais pouvoir enregistrer des instances de notificationReports qu'avec les valeurs que j'ai spécifiées dans mes enum.

    Cependant, si je fais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      valuesValidator1Report:
        Author:      [rootUser]
        type:        "Erreur"
        field:       "Valeurs"
        description: "Le validateur Valeurs accepte des floats"
        criticity:   "3 - BLABLA"
    je ne me retrouve avec aucune erreur, et je me retrouve effectivement avec "3 - BLABLA" entré en base pour la colonne "criticity".

    Auriez-vous une explication à ce comportement non-attendu ?

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Laisse tomber les enum et met en place une vraie structure de base de données. Avec des clefs liées.
    Tu va y gagner en rigueur et en fiabilité.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Je suis tout à fait d'accord avec ça

    Après, là, c'est un tout petit projet qui ne risque pas de bouger (voire même d'être utilisé ...), du coup je n'ai pas eu envie de me compliquer à faire une table de paramètres globaux vers laquelle mes autres tables pointeraient.

    Ceci dit, je me retrouve avec ce "bug" que je ne comprends pas et que je pourrais contourner avec ta méthode. Mais s'il y a des ENUM, j'aimerais pouvoir m'en servir correctement !

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    De toutes les formations que j'ai suivi et donné en base de données, il ressort que les ENUM sont essentiellement des "truc" mis en place pour les gens trop "paresseux" pour travailler proprement.

    Doctrine avec une table de paramètre est des table héritées permet d'arriver à un résultat largement plus simple à exploiter, y compris dans les listes déroulantes, je n'ai jamais vu aucune méthode permettant simplement de les gérer à partir des options d'un ENUM.

    Pourquoi faire long et compliquer alors qu'il est possible de faire rapide et simple (et propre) ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Bon, reste plus qu'à mettre "RESOLU" et retourner à la méthode classique d'une table de paramétrage.

    Merci de t'obstiner à vouloir que je reprenne le droit chemin. C'est parfois tentant que de se laisser aller

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Je serais pour toi, le fouet de la raison

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Souci avec les ENUM Postgres
    Par sarsipius dans le forum JPA
    Réponses: 1
    Dernier message: 06/07/2011, 21h27
  2. Réponses: 10
    Dernier message: 28/08/2009, 11h21
  3. Réponses: 2
    Dernier message: 25/10/2007, 13h56
  4. probléme avec les enum
    Par amazircool dans le forum Langage
    Réponses: 5
    Dernier message: 28/09/2007, 13h53
  5. Créer un champ enum avec les valeurs d'un tableau
    Par Ralfman68 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 14/08/2007, 10h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo