|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 11 ![]() |
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 :
Très bonne soirée, Cordialement, Léo |
||
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
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).
|
|
00
|
|
|
#3 | ||||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 11 ![]() |
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 :
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 :
A bientôt, Cordialement, Léo |
||||
|
|
00
|
|
|
#4 | ||
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Le schéma que tu souhaites est bon, presque parfait. Le revoici très légèrement modifié
Code :
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).
|
||
|
00
|
|
|
#5 | ||||||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 11 ![]() |
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 :
Voici mon script : Code :
Code :
Encore merci pour tout ! Léo |
||||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
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 Utilisez le bouton résolu! |
|
|
00
|
|
|
#7 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
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. 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).
|
|
00
|
|
|
#8 | ||||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 11 ![]() |
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 :
Code :
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 |
||||
|
|
00
|
|
|
#9 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
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
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).
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 11 ![]() |
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 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 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 ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com