Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > ORM > Doctrine
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/11/2010, 23h27   #1
Invité de passage
 
Inscription : mai 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 11
Points : 0
Points : 0
Par défaut 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 :
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
leomac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 14h46   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 15h36   #3
Invité de passage
 
Inscription : mai 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 11
Points : 0
Points : 0
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 :
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 :
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
leomac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 19h35   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Le schéma que tu souhaites est bon, presque parfait. Le revoici très légèrement modifié
Code :
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 20h33   #5
Invité de passage
 
Inscription : mai 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 11
Points : 0
Points : 0
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 :
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 :
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 :
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
leomac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 21h08   #6
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
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 Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 21h15   #7
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 :
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 22h06   #8
Invité de passage
 
Inscription : mai 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 11
Points : 0
Points : 0
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 :
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 :
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 !!!
leomac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 23h37   #9
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 00h36   #10
Invité de passage
 
Inscription : mai 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 11
Points : 0
Points : 0
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 !
leomac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h04.


 
 
 
 
Partenaires

Hébergement Web