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
