Question de dummie sur le tuto des formulaires type entity

Question sur formulaire type entity ou est enregistré la relation?....

a marqué ce sujet comme résolu.

Bonjour à tous, Tout d'abord je tiens à féliciter la clarté des tutoriels proposés ici, qui pour un debutant en symfony comme moi sont très utiles.

Ma question va vous faire rire mais bon… Dans le tuto sur les formulaires Symfony, dans la partie Entity on cré une liste de choix de categories pour Article. Dans l'entity Article il n'est pas créé de collone Categories dans la bdd table Articles, seul une relation "Categories" avec la table Categories. (Attention vous allez rire): Je ne comprend pas ou Symfony va enregistrer pour un article la correspondance avec une ou plusieurs Categories? puisque il n'y a pas de table faisant laliaison entre Articles et Categories?. Merci d'avance.

+0 -1

Hello !

Je déplace ton sujet en "Programmation". La "dev zone" est pour les échanges à propos du développement du site Zeste de Savoir en lui même.

+0 -0

Je pense meme que dans "Web" ce serait plus approprié :) fait.

Je t'avoue ne pas etre expert mais je vais essayer de t'expliquer. En gros dans tes Entity tu dois avoit quelque part des commentaire ORM qui dosent qu'il y a un lien entre article et caregories (propablement un OneToMany). Et en fait Symfony, et c'est la l'utilite, se charge tout seul de tout créé.

Ceci dit ta question concerne les base de données. En fait souvent quand on fait une base de données avec des liens, apres un certains nombre d'etape (transformation de MCD en MLD (noms francais attentions)) il y a des choix a faire et cette table association entre Categorie et Article fait partie des transformations de base lors de cette etape.

J'espere que tu as saisi. Maintenant si tu veux comprendre je te laisse creuser les base de données. Mais sache que quand tu developpe avec un framework style Symfony tu n'as pas besoin de t'occuper de la base de données

+1 -1

Merci tout d'abord pour ta réponse. Effectivement ma question concerne les BDD, car quant je crée, dans mon script Symfony, une relation ORM entre "concrètement" 2 tables de BDD, je ne retrouve pas le lien dans ma BDD: Mes entrées pour la table A et la table B apparaisse bien, mais elles semblent indépendante et je ne comprend pas comment et ou Symfony va refaire la relation entre ces deux tables pour un objet particulier. Je ne sais pas si je suis claire, en fait j'ai longtemps programmé en procedural et je faisais, pour un resultat equivalent, une table intermediaire liant les table A et B, la je ne comprend pas ou cela se fait et je ne crois pas à la magie ;)

Hello,

En fait ça n'est pas Symfony qui est à l'origine de la « magie » mais Doctrine2. Et en fait cela est du au fait qu'une entité ne soit pas une table, c'est important à souligner, et comme le dis Ricocotam, le modèle de tes entités ressemble plus à un MCD qu'un MLD.

Pour ce qui est de la table intermédiaire, doctrine la génère tout seul, après tout pourquoi il ne pourrait pas le faire ? Tu lui spécifie une relation "many to many": il fait donc tout le travail de création d'entité intermédiaire à ta place (c'est son rôle de faire les choses à ta place !).

Là où ça devient délicat c'est quand il faut que cette relation porte une valeur, Doctrine2 ne gère pas du tout la situation et on doit créer une entité intermédiaire (dommage, mais bon c'est un projet open source alors après tout, si on le veut, on peut le coder!).

J'espère que j'ai répondu à ta question…

+1 -0

Hello, Merci pour ta réponse. Cela fait un moment que j'enchaine les tutoriels Symfony sur ces relations one to many ou many to many et que je me pose cette question. Donc si doctrine2 crée elle même cette table intermédiaire (indispensable en BDD pour identifier le lien des données entre 2 tables) à quel moment le fait il? lors du update schema –force? car je ne vois aucune table intermédiaire crée dans mon PHPmyadmin? j'en suis à mon 5iéme tuto sur les one to many et aucun ne mentionne la création d'une table intermédiaire par doctrine(même celui présenté ici!)?. Donc cette table intermediaire est crée à quel moment par doctrine? Pourquoi je ne la voit pas dans phpmyadmin?

PS:On avance!

Salut !

La création de la table se fait, comme toutes les autres modifications SQL, lors de la commande doctrine:schema:update --force, effectivement.

Si certaines tables devraient être là, mais ne sont pas créées, je te conseille la lecture de la FAQ Symfony 2, plus précisément ceci

+0 -0

Merci à tous pour vos réponses, j'ai trouvé/compris mon problème: J'ai suivi le tuto sur les formulaires one to many sans faire préalablement celui sur le maping, du coup sans un mapping correcte cela ne marche pas!. Doctrine créé effectivement une jointable lors d'une many to many (mon cas) donc cela reste logique en terme de sauvegarde des relations d'entités et plus rien ne me semble magique!. Merci à tous pour vos indications

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte