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

Attachment: schema.yml
Description: Binary data

Répondre à