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

Répondre à