tu peux nous montrer ton code ! Alexandre Baron
Le 17 mars 2011 08:46, Cyril FLIELLER <[email protected]> a écrit : > Franchement c'est incompréhensible, j'ai beau décrire le plus précisément > mes tables, le résultat est le même. Impossible de définir une clé primaire > étrangère. > > Cyril FLIELLER > > > Le 17 mars 2011 07:08, alex baron <[email protected]> a écrit : > >> Un bon exemple parle toujours mieux dans sfDocrineGuard il y a un fichier >> schema.yml qui devrait te permettre de comprendre comment reproduire le type >> de relation que tu veux créer. >> === table d'association user et group === >> sfGuardUserGroup: >> options: >> symfony: >> form: false >> filter: false >> collate: utf8_unicode_ci >> charset: utf8 >> actAs: [Timestampable] >> columns: >> user_id: >> >> type: integer >> primary: true >> group_id: >> type: integer >> primary: true >> relations: >> sfGuardUser: >> local: user_id >> onDelete: CASCADE >> sfGuardGroup: >> local: group_id >> onDelete: CASCADE >> ===le user=== >> sfGuardUser: >> actAs: [Timestampable] >> options: >> collate: utf8_unicode_ci >> charset: utf8 >> columns: >> >> id: >> type: integer >> primary: true >> autoincrement: true >> username: >> type: string(128) >> notnull: true >> unique: true >> algorithm: >> type: string(128) >> default: sha1 >> notnull: true >> salt: string(128) >> password: string(128) >> is_active: >> type: boolean >> default: 1 >> is_super_admin: >> type: boolean >> default: false >> last_login: >> type: timestamp >> type: >> type: string(255) >> indexes: >> is_active_idx: >> fields: [is_active] >> relations: >> TypeUser: >> class: agrConfigTypeUser >> local: type >> foreign: key_label >> groups: >> class: sfGuardGroup >> local: user_id >> foreign: group_id >> refClass: sfGuardUserGroup >> foreignAlias: Users >> permissions: >> class: sfGuardPermission >> local: user_id >> foreign: permission_id >> refClass: sfGuardUserPermission >> foreignAlias: Users >> >> ===le groupe=== >> sfGuardGroup: >> actAs: [Timestampable] >> options: >> collate: utf8_unicode_ci >> charset: utf8 >> columns: >> >> id: >> type: integer >> primary: true >> autoincrement: true >> name: >> type: string(255) >> unique: true >> description: string(1000) >> relations: >> users: >> class: sfGuardUser >> refClass: sfGuardUserGroup >> local: group_id >> foreign: user_id >> foreignAlias: Groups >> permissions: >> class: sfGuardPermission >> local: group_id >> foreign: permission_id >> refClass: sfGuardGroupPermission >> foreignAlias: Groups >> >> Alexandre Baron >> >> >> >> >> Le 16 mars 2011 21:16, Lélio <[email protected]> a écrit : >> >> Hé bien ça permet de connaitre explicitement et de contrôler les getter et >>> setter vers les objets liés. Si la relation n'est pas explicite, les getter >>> et setter ne seront pas (a priori) créés dans les classes Base... >>> >>> >>> From: Cyril FLIELLER >>> Sent: Wednesday, March 16, 2011 8:47 PM >>> To: [email protected] >>> Subject: Re: [symfony-fr] [Doctrine] Clé primaire étrangère >>> >>> >>> >>> À quoi cela sert-il de définir les relations de type many ? Dans un sens >>> c'est de la redondance non ? >>> >>> Cyril FLIELLER >>> >>> >>> >>> Le 16 mars 2011 18:00, Lélio ML <[email protected]> a écrit : >>> >>> Alors décrit tes relations de manière plus complète. Et attention, le nom >>> de >>> la relation sera repris par les getter et setter et si elle n'est pas >>> préciser la classe à laquelle se rapporte la relation. Il te manque >>> peut-être des majuscules aux bons endroits pour que ça marche nickel. >>> >>> Par exemple : >>> Customer: >>> ... >>> >>> Phase: >>> ... >>> >>> Business: >>> relations: >>> Customer: >>> class: Customer >>> local: customer_id >>> foreign: id >>> type: one >>> Phases: >>> class: Phase >>> local: id >>> foreign: business_id >>> type: many >>> >>> >>> >>> -----Message d'origine----- >>> De : [email protected] [mailto:[email protected]] De >>> la >>> part de Cyril FLIELLER >>> >>> Envoyé : mercredi 16 mars 2011 17:43 >>> >>> À : [email protected] >>> >>> Objet : RE: [symfony-fr] [Doctrine] Clé primaire étrangère >>> >>> >>> Mais mon 1er exemple marche ! C'est le deuxième qui ne marche pas. Ce qui >>> est plutôt bizarre car si doctrine sait gérer une double clé primaire >>> étrangère pourquoi pas une seule. >>> >>> Le 16 mars 2011 17:37, "Lélio ML" <[email protected]> a écrit : >>> >>>> Il me semble que tu veux gérer des utilisateurs. A moins que ce ne >>>> soit pas les utilisateurs de l'application (et je te prie de m'excuser >>>> alors de ma méprise), le plugin sfGuard gère les utilisateurs, les >>>> groupes et les permissions de l'application. >>>> >>>> Sinon, il faut savoir que Symfony/Doctrine n'apprécient pas du tout >>>> les clés multiples. >>>> Pour contourner ce soucis, je laisse un id comme clé primaire et je >>>> mets un index unique sur les champs qui auraient du être dans la clé >>>> >>> multiple. >>> >>>> >>>> >>>> >>>> -----Message d'origine----- >>>> De : [email protected] [mailto:[email protected]] >>>> De la part de Cyril FLIELLER Envoyé : mercredi 16 mars 2011 17:30 À : >>>> [email protected] Objet : Re: [symfony-fr] [Doctrine] Clé >>>> primaire étrangère >>>> >>>> J'avoue ne pas bien comprend à quoi va me servir sfDoctrineGuard ici ? >>>> >>>> Cyril FLIELLER >>>> >>>> >>>> >>>> Le 16 mars 2011 17:26, Lélio ML <[email protected]> a écrit : >>>> >>>> >>>> Pourquoi ne pas utiliser le plugin sfDoctrineGuard ? >>>> >>>> -----Message d'origine----- >>>> De : [email protected] >>>> [mailto:[email protected]] De la part de Cyril FLIELLER >>>> Envoyé : mercredi 16 mars 2011 17:23 À : [email protected] >>>> Objet : [symfony-fr] [Doctrine] Clé primaire étrangère >>>> >>>> >>>> J'ai un souci en définissant mon fichier yml, je n'obtiens pas le SQL >>>> voulu. >>>> >>>> J'arrive à créer une table avec pour deux clés primaires étrangères >>>> sans souci pour stocker des groupes d'utilisateurs. J'ai en gros : >>>> >>>> groups: >>>> columns: >>>> label: { type: string(255), notnull: true } >>>> persons: >>>> columns: >>>> email: { type: string(255), notnull: true } >>>> lastname: { type: string(255), notnull: true } >>>> firstname: { type: string(255), notnull: true } >>>> >>>> membersgroups: >>>> columns: >>>> person_id: { type: integer, primary: true } >>>> group_id: { type: integer, primary: true } >>>> relations: >>>> persons: { onDelete: CASCADE, local: person_id, foreign: >>>> id } >>>> groups: { onDelete: CASCADE, local: group_id, foreign: id } >>>> >>>> Ça nickel, ça marche. >>>> >>>> Mais par contre, je veux créer une autre table avec une clé primaire >>>> étrangère et deux autres clés étrangères et là c'est le drame ! >>>> >>>> absences: >>>> columns: >>>> ......... >>>> >>>> missions: >>>> columns: >>>> absence_id: { type: integer, primary: true } >>>> transport_id: { type: integer, notnull: true } >>>> entite_id: { type: integer } >>>> relations: >>>> absences: { local: absence_id, foreign: id } >>>> transport: { onDelete: CASCADE, local: transport_id, foreign: id } >>>> entite: { onDelete: CASCADE, local: entite_id, foreign: id } >>>> >>>> Et là, donc, c'est le drame, niveau SQL ça ne me génère pas la >>>> contrainte de clé étrangère sur ma table absence. >>>> >>>> >>>> >>>> >>>> >>>> >>>> Cyril FLIELLER >>>> >>>> >>>> >>>> -- >>>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >>>> Symfony-fr. >>>> Pour envoyer un message à ce groupe, adressez un e-mail à >>>> [email protected]. >>>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>>> [email protected] >>>> >>> >>> symfony-fr+<mailto:symfony-fr%[email protected]> >>>> >>> >>> <mailto:symfony-fr%[email protected] >>>> >>> >>> <mailto:symfony-fr%[email protected]> > . >>> >>> Pour plus d'options, consultez la page de ce groupe : >>>> http://groups.google.com/group/symfony-fr?hl=fr >>>> >>>> >>>> -- >>>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >>>> Symfony-fr. >>>> Pour envoyer un message à ce groupe, adressez un e-mail à >>>> [email protected]. >>>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>>> [email protected] >>>> >>> >>> symfony-fr+<mailto:symfony-fr%[email protected]> >>>> >>> >>> <mailto:symfony-fr%[email protected] >>>> >>> >>> <mailto:symfony-fr%[email protected]> > . >>> >>> Pour plus d'options, consultez la page de ce groupe : >>>> http://groups.google.com/group/symfony-fr?hl=fr >>>> >>>> >>>> >>>> >>>> -- >>>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >>>> Symfony-fr. >>>> Pour envoyer un message à ce groupe, adressez un e-mail à >>>> [email protected]. >>>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>>> [email protected] >>>> >>> <mailto:symfony-fr%[email protected]> . >>> >>>> Pour plus d'options, consultez la page de ce groupe : >>>> http://groups.google.com/group/symfony-fr?hl=fr >>>> >>>> >>>> -- >>>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >>>> >>> Symfony-fr. >>> >>>> Pour envoyer un message à ce groupe, adressez un e-mail à >>>> >>> [email protected]. >>> >>>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>>> >>> [email protected] >>> <mailto:symfony-fr%[email protected]> . >>> >>>> Pour plus d'options, consultez la page de ce groupe : >>>> http://groups.google.com/group/symfony-fr?hl=fr >>>> >>>> >>> >>> -- >>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >>> Symfony-fr. >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> [email protected]. >>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> [email protected]. >>> Pour plus d'options, consultez la page de ce groupe : >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> -- >>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >>> Symfony-fr. >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> [email protected]. >>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> [email protected]. >>> Pour plus d'options, consultez la page de ce groupe : >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> >>> >>> -- >>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >>> Symfony-fr. >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> [email protected]. >>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> [email protected]. >>> Pour plus d'options, consultez la page de ce groupe : >>> http://groups.google.com/group/symfony-fr?hl=fr >>> -- >>> Vous recevez ce message, car vous êtes abonné au groupe Google >>> Groupes Symfony-fr. >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> [email protected]. >>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> [email protected]. >>> Pour plus d'options, consultez la page de ce groupe : >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >> -- >> Vous recevez ce message, car vous êtes abonné au groupe Google >> Groupes Symfony-fr. >> Pour envoyer un message à ce groupe, adressez un e-mail à >> [email protected]. >> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >> [email protected]. >> Pour plus d'options, consultez la page de ce groupe : >> http://groups.google.com/group/symfony-fr?hl=fr >> > > -- > Vous recevez ce message, car vous êtes abonné au groupe Google > Groupes Symfony-fr. > Pour envoyer un message à ce groupe, adressez un e-mail à > [email protected]. > Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse > [email protected]. > Pour plus d'options, consultez la page de ce groupe : > http://groups.google.com/group/symfony-fr?hl=fr > -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected]. Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr
