2010-04-10 7 views
0

J'ai de gros problèmes avec symfony et doctrine au début d'un nouveau projet. J'ai créé un diagramme de base de données avec mysql workbench, j'ai inséré le sql dans phpmyadmin et ensuite j'ai essayé la doctrine de symfony: build-schema pour générer le schéma YAML. Il génère un schéma incorrect (les relations n'ont pas de delete/on update) et après cela j'ai essayé symfony doctrine: build --sql et symfony doctrine: insert-sqlsymfony doctrine build-sql erreur

L'instruction insert-sql génère une erreur (Impossible de créer une table ... Echec de la requête alter table Ajouter une contrainte ....), j'ai donc décidé de jeter un coup d'oeil sur le sql généré et j'ai découvert quelques différences entre le sql généré depuis mysql workbench (qui fonctionne parfaitement, y compris les relations) et le sql généré par la doctrine.

Je vais être court à partir de maintenant: je dois tables, EVENT et FORM et une relation 1 à n (chaque événement peut avoir plusieurs formes) si la contrainte correcte (générée avec l'établi) est

ALTER TABLE `form` ADD CONSTRAINT `fk_form_event1` FOREIGN KEY (`event_id`) REFERENCES `event` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; 
déclaration produite

doctrine est:

ALTER TABLE event ADD CONSTRAINT event_id_form_event_id FOREIGN KEY (id) REFERENCES form(event_id); 

Il est totalement inversée et je suis sûr est l'erreur ici. Que devrais-je faire? C'est aussi correct comme ça?

+2

Le générateur SQL est ancien. Ne l'utilisez pas. Écrivez vos schémas dans YAML et vous obtenez de contrôler exactement ce que SQL est généré. Ce n'est pas dur. –

+0

Il n'est pas vraiment acceptable que l'introspection Doctrine SQL soit limitée/cassée (si c'est vrai) - ce n'est certainement pas le cas avec Propel. YAML est un outil inférieur pour la conception de base de données que, par exemple, DBDesigner et juste parce qu'il est facile * assez * ne signifie pas qu'il n'y a pas de point juste à faire pour le rendre encore plus facile. – Raise

Répondre

0

C'est cassé, j'ai écrit le schéma manuellement et cela fonctionne parfaitement. Je ne voulais pas faire ça parce que c'était un très gros fichier, mais j'ai aussi appris!

Merci les gars!

0

Pour obtenir à la fois une représentation visuelle et une génération automatique de code, vous pouvez utiliser ORM Designer pour que tout soit couvert par un seul outil.

Questions connexes