Voilà le fichier schema.yml Cyril FLIELLER
Le 17 mars 2011 09:22, alex baron <[email protected]> a écrit : > 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 > -- 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
schema.yml
Description: Binary data
