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

PHP & Base de données Discussion :

[Doctrine] Générer les modèles avec les relations à partir de la BDD


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut [Doctrine] Générer les modèles avec les relations à partir de la BDD
    Bonjour tout le monde,

    voilà quelques jours que je bosse sur un petit projet de CMS utilisant l'ORM Doctrine...

    J'ai commencé à bosser dessus en partant du principe :
    - tout d'abord, j'ecris mes schema YAML
    - je génère les modèles et la base

    Le problème avec cet ordre-là, c'est que j'ai pensé que mon application peut évoluer, il peut y avoir de nouveaux champs etc... et en relançant le script qui génère les modèles et la base, je me retrouve avec un FATAL ERROR (foreign key constraint etc...)

    Je me suis donc dit, travaillons plutot sur cet ordre là :
    - je pose mes tables
    - je génère mes modèles


    Pour l'instant, celà fonctionnait plutot bien, maiis je rencontre un soucis au niveau des relations "MANY TO MANY"...

    Est-ce possible de générer la relation "MANY TO MANY" sur un modèle, avec une convention particulière sur la BDD ?



    --------------------------------
    Voici mon exemple :

    J'ai donc 4 tables : category, post, media et media_post

    La relation simple marche parfaitement mais la relation many to many n'est pas fonctionnelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $post = Doctrine_Core::getTable('Post')->findOneById(1);
     
    // relation one to one
    echo $post->Category->name; // marche parfaitement
     
    // relation many to many
    echo $post->Medias->name; // ne marche pas
     
    // relation one to many
    echo $post->MediaPosts[0]->Media->name // marche parfaitement, mais n'est pas un raccourcis...
    Voili voilou, j'espere qu'il y a une façon de générer ce type de relation... j'ai beaucoup aimé le fait de travailler sur des fichiers YAML, mais la modification des tables de la base de donnée et ses relations est fortement possible... et ce cms sera dans le but de gagner du temps sur le développement... :p en esperant que quelqu'un ait une petite idée ! merci beaucoup !

    Très bonne soirée,

    Cordialement,
    Léo

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu peux mettre ton shema.yml ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour Michel Rotta, désolé pour mon oublie

    Après avoir créé mes tables sur phpmyadmin( en innoDB avec mes relations), je lance le script permettant de générer le YAML à partir de la BDD (Doctrine_Core::generateYamlFromDb) et voila le schema obtenu :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    Category:
      connection: doctrine
      tableName: category
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        name:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
      relations:
        Post:
          local: id
          foreign: category_id
          type: many
    Media:
      connection: doctrine
      tableName: media
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        name:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        file:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
      relations:
        MediaPost:
          local: id
          foreign: media_id
          type: many
    MediaPost:
      connection: doctrine
      tableName: media_post
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        media_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        post_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
      relations:
        Post:
          local: post_id
          foreign: id
          type: one
        Media:
          local: media_id
          foreign: id
          type: one
    Post:
      connection: doctrine
      tableName: post
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        name:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        content:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        category_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
      relations:
        Category:
          local: category_id
          foreign: id
          type: one
        MediaPost:
          local: id
          foreign: post_id
          type: many


    Alors que le schema que j'aimerai obtenir est le yaml ci-dessous, contenant les liaisons de many to many de Post à Media, et inversement (et non les liaisons par rapport à la table de liaison MediaPost) :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Post:
      columns:
        id:
          primary: true
          autoincrement: true
          type: integer(4)
        title: string(255)
        content: text
        category_id:
          type: integer(4)
          primary: true
          notnull: true
        valid:
            type: integer(1)
      relations:
        Category:
          local: category_id
          foreign: id
          foreignAlias: post
        Medias:
          foreignAlias: Posts
          class: Media
          refClass: MediaPost
     
    Category:
      columns:
        id:
          primary: true
          autoincrement: true
          type: integer(4)
        name: string(255)
     
    Media:
      columns:
        id:
          primary: true
          autoincrement: true
          type: integer(4)
        name: string(255)
        file_mini: string(255)
        file_preview: string(255)
        file_original: string(255)
      relations:
        Posts:
          foreignAlias: Medias
          class: Post
          refClass: MediaPost
     
    MediaPost:
      columns:
        id:
          primary: true
          autoincrement: true
          type: integer(4)
        media_id: integer(4)
        post_id: integer(4)
      relations:
        Media:
          foreignAlias: MediaPosts
        Post:
          foreignAlias: MediaPosts
    Peux-t-on obtenir ce genre de schema YAML en respectant des convetions ou autre ? merci

    A bientôt,
    Cordialement,

    Léo

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Le schéma que tu souhaites est bon, presque parfait. Le revoici très légèrement modifié
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    post:
      columns:
        title: string(255)
        content: text
        category_id:
          type: integer
          notnull: true
        valid:
            type: integer(1)
      relations:
        Category:
          local: category_id
          foreign: id
          foreignAlias: posts
        Medias:
          foreignAlias: posts
          class: media
          refClass: media_post
     
    Category:
      columns:
        name: string(255)
     
    Media:
      columns:
        name: string(255)
        file_mini: string(255)
        file_preview: string(255)
        file_original: string(255)
     
    MediaPost:
      columns:
        media_id: 
          type: integer
          primaty: true
        post_id: integer
          type: integer
          primaty: true
      relations:
        Media:
          foreignAlias: MediaPosts
        Post:
          foreignAlias: MediaPosts
    • Si on ne défini pas de clef primaire, doctrine crée automatiquement un champ id integer(8) auto-incrémenté et clef primaire. Autant le laisser faire.
    • table post, champ catégorie_id. La clef primaire ne doit pas comprendre de donnée unitaire susceptible de changer (fn4 je crois) donc categorie_id ne peut faire partie de la clef primaire. Et n'a aucun intérêt à y être. De plus, doctrine gère très mal les clefs primaires multi champs sont difficiles à gérer sous doctrine, sauf exception de la table de liaison dans le cas d'une liaison n-n.
    • table post, champ valid. A mon avis un champ boolean serait mieux.
    • table post, relations. Un truc, le nom des tables ne finit jamais par "s". Les relations, si elles nous retournent plusieurs enregistrement verrons leurs nom pourvu d'un "s", pour savoir qu'on a un doctrine_collection en retour. Donc le foreignAlias dans la relation vers categorie devient "posts".
    • le nom des tables, champs et liens sont en minuscules.
    • table category, même remarque pour l'id. Il est maintenant compatible, en longueur, avec celui de la table post.
    • table media. La relation media-post est déjà correctement définie sur la table média, une relation ne doit être définie que sur une des deux tables pour éviter les doublons non compatibles. Trappe.
    • table mediapost. L'exception sur les clefs primaire, elle est ici composé des deux clefs permettant la liaison. Donc pas de champ id auto-incrémenté. Les clef sont passé à integer(8), hors, 8 est la valeur par défaut pour integer.


    Regarde le schéma est les modifications proposées, met ton schéma à jour, oublie phpMyAdmin pour la création des tables et génère ton modèle à partir du schéma et non le contraire.

    Tout de suite, cela va marcher mieux.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Re-bonjour,

    Merci pour votre aide et la correction de mon schema YAML ! j'ai appris pas mal de choses avec une réponse de votre part, je vous en remercie !

    Je comprends très bien le choix de laisser tomber phpMyAdmin pour créer les tables, et de tout baser sur le schema YAML qui sera bien plus complet que phpMyAdmin... D'ailleurs, comme dis sur mon premier post, j'ai beaucoup aimé le système de génération de models + table par rapport au schema YAML... Mais je rencontrais à chaque fois un problème de type FATAL ERROR.

    J'ai donc modifié mon schema YAML avec les corrections que vous m'avez proposé, voila le résultat :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Post:
      columns:
        title: string(255)
        content: text
        category_id:
          type: integer(4)
          notnull: true
        valid:
            type: integer(1)
      relations:
        Category:
          local: category_id
          foreign: id
          foreignAlias: posts
        Medias:
          foreignAlias: posts
          class: media
          refClass: media_post
     
    Category:
      columns:
        name: string(255)
     
    Media:
      columns:
        name: string(255)
        file_mini: string(255)
        file_preview: string(255)
        file_original: string(255)
     
    MediaPost:
      columns:
        media_id:
          type: integer
          primary: true
        post_id:
          type: integer
          primary: true
      relations:
        Media:
          foreignAlias: MediaPosts
        Post:
          foreignAlias: MediaPosts
    En lançant mon script qui génère les modèles + la base de donnée, je rencontre une erreur de type FATAL_ERROR...

    Voici mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Doctrine_Core::dropDatabases();
    Doctrine_Core::createDatabases();
    Doctrine_Core::generateModelsFromYaml('../system/yaml/schema.yml', '../system/models');
    Doctrine_Core::createTablesFromModels('../system/models');
    et voici l'erreur générée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Uncaught exception 'Doctrine_Export_Exception' with message 'SQLSTATE[HY000]: General error: 1005 Can't create table 'lcms.#sql-1374_e0' (errno: 150). Failing Query: "ALTER TABLE post ADD CONSTRAINT post_category_id_category_id FOREIGN KEY (category_id) REFERENCES category(id)". Failing Query: ALTER TABLE post ADD CONSTRAINT post_category_id_category_id FOREIGN KEY (category_id) REFERENCES category(id)'
    Je ne comprends pas il me met ce message d'erreur... Je suis en train d'essayer plusieurs modifications sur le schema YAML, mais rien y fait, toujours la même erreur... Est-ce problématique ?

    Encore merci pour tout !
    Léo

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    on dirait que Doctrine a un utilisateur SQL qui n'a pas le droit de faire des alter table. il faut que tu lui donnes plus de droit tant que tu remodèles la base.

    phpmyadmin nous revoilà.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Rien a voir avec un problème de droit, les autres constraint sont passé et il y en a plusieurs autres générés par le modèle.

    Juste une erreur classique dans un schéma modifier lourdement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        category_id:
          type: integer(4)
    Tu as oublié de virer le "(4)" dans la définition de l'integer de ta clef, tu essayes donc d'apparier un integer(8) de la clef id avec un integer(4) du champ category_id, ce qui, bien sur n'est pas réalisable.

    Trois fois del dans le schéma devraient suffire à résoudre le problème
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonsoir tout le monde

    Gene69, normalement, vu que je suis sur wamp avec l'utilisateur root, il devrait avoir les droits suffisants pour faire des ALTER TABLE...


    Michel Rotta, tu avais parfaitement raison ! supprimer la longueur de champs a tout de suite reglé mon problème ! mais je me retrouve, comme au tout début, avec le problème initial : modifier le modèle conceptuel de donnée dans le temps...

    Je m'explique, après avoir généré mes modèles concernant post, category et media, on va imaginer que le client veut maintenant ajouter un document à son post... tout en gardant biensûr les données déjà existantes...

    Ce que j'aurai fait sur phpMyAdmin c'est :
    - tout d'abord, créer ma table "document"
    - puis ajouter une clé étrangère sur la table "post" appelé "document_id"

    Alors, j'ai ré-ecris un 2ème schema YAML, en me disant que je pourrai modifier la table post en "ALTER TABLE", le voici :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Post:
      columns:
        title: string(255)
        content: text
        category_id:
          type: integer
          notnull: true
        document_id:
          type: integer
        valid:
            type: integer(1)
      relations:
        Category:
          local: category_id
          foreign: id
          foreignAlias: posts
        Document:
          local: document_id
          foreign: id
          foreignAlias: posts
        Medias:
          foreignAlias: posts
          class: media
          refClass: media_post
     
    Document:
      columns:
        name: string(255)
    Voici l'erreur générée (qui est d'ailleurs exactement la même si je relançais le script avec mon schema initial contenant category, post, media, media_post) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Uncaught exception 'Doctrine_Export_Exception' with message 'SQLSTATE[HY000]: General error: 1005 Can't create table 'lcms.#sql-1374_ec' (errno: 121). Failing Query: "ALTER TABLE media_post ADD CONSTRAINT media_post_post_id_post_id FOREIGN KEY (post_id) REFERENCES post(id)". Failing Query: ALTER TABLE media_post ADD CONSTRAINT media_post_post_id_post_id FOREIGN KEY (post_id) REFERENCES post(id)'
    J'ai aussi essayé de modifier le shema initial et d'y ajouter le champs "document_id" à "post", et le modèle "Document", mais l'erreur est exactement la même...

    C'est pour celà que, même si j'ai beaucoup aimé de travailler avec des schema YAML, avec le peu de connaissance, je n'arrivais pas à avoir autant de liberté à faire évoluer mon MCD avec doctrine, par rapport à phpMyAdmin...

    Là, je ne trouve pas d'idée... mais je ne perds pas espoir, j'aime tellement travailler avec Doctrine, ces modèles... et tous les composants qui y sont liés... je ne pourrais plus m'en passer XD

    Avez-vous des ptites idées à ce niveau-là ?

    Encore merci !

    Cordialement,

    Léo


    EDIT : je précise que pour l'instant, il n'y a aucune données dans mes tables... toutes les tables sont vides voili voilou :p merki !!!

  9. #9
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Au premier degré, je dirais que tu as raisons.

    Mais analysons un peu plus loin.

    Tu ne développes pas sur la base de production je suppose (si non, notre conversation prendrait fin ici ). Tu dois, au moins, avoir 5 environnements :
    • un environnement de développement (généralement plusieurs, notament pour ce type de cas)
    • un environnement de test recréable facilement pour lancer des test fonctionnels et de non régressivités
    • un environnement de test hors debug pour toi, développeur
    • un environnement de validation avant mise en ligne pour ton client
    • un environnement de production chez ton client


    Une fois cela poser, on va considérer que les développeurs de doctrine ne sont pas des bœufs et développent aussi avec plusieurs environnements. De plus, on va même ce dire qu'ils y ont pensé et implémenter un truc sympa pour nous...

    Et nous découvrons, rouges de plaisir, un chapitre entier sur les migrations avec doctrine.

    L'idée est de modifier ton schéma et de développer et tester, les données, là, n'ont pas d'importance. Une fois le schéma stable (le nouveau), tu changes d'environnement, où tu récupères une base avec l'ancien schéma et tu génères des fichiers de migration qu'il faudra, parfois, compléter pour les migrations ou transformations de données.

    Il ne reste plus qu'à le tester, chez toi, et sur l'environnement de validation. S'il passe cela, le faire sur celui de production, une fois valider, ne sera plus qu'un passage déjà travailler plusieurs fois. Que ceci ne te dispense pas, pour autant, d'utiliser, abusivement, des sauvegardes...


    Je vais faire un peu de prosélytisme, vu que tu as l'air d'aimer beaucoup doctrine, je te recommande d'aller explorer le forum symfony et le tutoriel rapide (dans un premier temps), tu te rendras compte que doctrine, utilisé avec un framework de qualité, peut être sublimé.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse complète, Michel Rotta !! je peux te l'assurer, c'est très très intéressant !!

    Effectivement, j'ai bien différents environnements, mais on va dire que j'en ai 2 qui englobent une bonne partie... l'environnement de développement en local (avec tous les error_reporting), je fais mes modifications sur mes bases de données, sur les fichiers et je teste... si c'est tout bon, alors je place alors tous mes fichiers par FTP sur l'environnement de production (aucun affichage des erreurs php)

    dans l'entreprise où j'etais l'année derniere (une très petite d'ailleurs), on attaquait directement l'environnement de production... ce qui nous avait fait faire pas mal d'erreur perte de données de la base, perte de fichiers, etc... XD depuis, j'essaie d'éviter ce genre de bétise ^^



    En tout cas, je te remercie encore une fois... Même si je ne suis pas fortiche en anglais, je vais me farcir ce joli chapitre qu'est "les migrations sur doctrine"... celà va sûrement me résoudre mon problème



    Concernant le framework Symfony (et les frameworks en général :p), j'ai déjà pas mal testé ce framework avec le début du cookbook jobeet... Je l'ai trouvé très intéressant... C'est d'ailleurs grâce à lui que je me suis mis à Doctrine XD mais j'ai pas mal de difficultés avec la structure de symfony...
    Effectivement, j'ai pas mal utilisé le framework CakePHP, que j'ai beaucoup aimé... Mise à part la structure du MVC (je préfère d'ailleurs la structure MVC de Zend Framework)...

    Bref, tout ceci pour expliquer que le petit projet sur lequel je suis en train de bosser est la continuation de mon framework perso qui mélange pas mal d'idées des framework déjà existants :
    - structure MVC de Zend Framework
    - presque tout le reste pour CakePHP XD (components, helpers tels que Form, Html, etc..)
    - et le "multi-application" + Doctrine de Symfony :p

    Et avec cette base, le projet final sera un CMS qui me permettra de développer des sites très très rapidement (créer des menus, et des arboréscences, génération des modules avec scaffolding, etc...)

    Il est sûr que Symfony (c'est le framework que je trouve le plus complet, même si mon préféré reste cakePHP) pourrait être la base de mon application, et me ferait gagner un temps considérable dans le développement... Mais j'ai déjà énormément avancé mon système, et le temps d'apprentissage de Symfony doit être je pense assez long... et j'ai une contrainte de temps à finaliser cette appli qui sera la base de mes applications d'ici 1 mois ou 2

    En tout cas, merci beaucoup pour ton aide précieuse, celà a été très intéressant... Je vais donc étudier ce que sont les migrations de doctrine, un point dont je me suis jamais penché !! encore merci !!

    PS : rhaaaa.... depuis le début de la semaine, je lis des articles, des débats sur le forum sur Symfony... Et ce thread me donne encore plus envie de m'y remettre sérieusement dessus... l'admin générator et tellement d'autres choses :p

    Encore merci, à moi les migrations Doctrine

    Bonne soirée !

    Cordialement,
    Léo

    EDIT : je suis en train de lire un sujet assez intéressant sur les migrations doctrine à travers Symfony... http://www.developpez.net/forums/d96...-base-donnees/
    encore merci pour m'avoir envoyé vers ce chapitre huhu !

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/11/2012, 14h24
  2. Réponses: 2
    Dernier message: 20/01/2012, 10h03
  3. les modèles avec GCC
    Par khazna dans le forum C++
    Réponses: 2
    Dernier message: 28/11/2007, 18h26
  4. [VBA][Excel] Avec les modèles Excel.
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/08/2006, 10h27

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