Bonjour,

pour me mettre à Symfony2 j'ai commencé une petite application de gestion de réservation d'appartements.

En bref, un utilisateur peut être rattaché à plusieurs appartements et vice versa.
La relation "user" / "estate" est de type n:n et implique donc une table de jointure.

J'ai construit ma base de donnée avec PHPMyAdmin et ai entre autres ces trois tables:
- "user" et "estate" dont chacune a comme clef primaire un entier en autoincrément
- "estateUser" avec comme clef primaire la composition deux clefs étrangères "idUser" et "idAppart".

J'ai commencé par envisager une relation "manyToMany" dans le schema yaml ..
Seulement j'avais besoin d'ajouter plusieurs champs supplémentaires dans ma table de liaison.

J'ai pu lire que lorsque une relation manyToMany nécessite ne serait-ce qu'un champ supplémentaire, il ne s'agit plus vraiment d'une relation manyToMany et la table de jointure doit être modélisée comme une entité à part entière.
La relation est scindée en 4 relations:

1- oneToMany user => estateUser
2- oneToMany estate=> estateUser
---
3- manyToOne estateUser => user
4- manyToOne estateUser => estate


Je ne suis pas parvenu à générer le yaml avec les outils de Doctrine en ligne de commande pour obtenir cette troisième entité
J'ai essayé notemment :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
app/console doctrine:mapping:convert yml ./src/AppBundle/Ressources/config/doctrine --from-database --force
Code : Sélectionner tout - Visualiser dans une fenêtre à part
app/console doctrine:mapping:import AppBundle yml
Doctrine considère systématiquement la relation comme une "manyToMany" et ne créé donc pas de fichier estateUser.orm.yml

En recherchant un peu, je suis tombé sur cet article de la documentation:
Dans l'exemple il n'y a que le code décoré d'annotations, et pas la version YAML.



Je souhaite donc pouvoir générer les fichiers de schéma depuis la base.
Ou si ce n'est pas possible à cause de la nature de la relation, juste savoir que mettre dans les fichiers yml pour chacunes des 3 entités, en conservant le principe de clef primaire combinée avec les 2 clefs étrangères pour l'entité "estateUser".
Et enfin pouvoir générer mes classes d'entités et leurs classes de reporitory.


Voici mon ébauche des fichiers schema yml à la main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Estate:
    type: entity
    table: estate
    id:
        id:
            type: integer
            nullable: false
            unsigned: false
            id: true
            generator:
                strategy: IDENTITY
    fields:
        label:
            type: string
            nullable: false
            length: 30
            fixed: false
    oneToMany:
        features:
            targetEntity: Estateuser
            mappedBy: estate
    lifecycleCallbacks: {  }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
User:
    type: entity
    table: user
    id:
        id:
            type: integer
            nullable: false
            unsigned: false
            id: true
            generator:
                strategy: IDENTITY
    fields:
        name:
            type: string
            nullable: false
            length: 70
            fixed: false
        lastname:
            type: string
            nullable: false
            length: 70
            fixed: false
        password:
            type: string
            nullable: false
            length: 70
            fixed: false
        email:
            type: string
            nullable: false
            length: 70
            fixed: false
        created:
            type: datetime
            nullable: false
        modified:
            type: datetime
            nullable: false
        deleted:
            type: datetime
            nullable: true
    oneToMany:
      oneToMany:
        features:
          targetEntity: Estateuser
          mappedBy: users
    lifecycleCallbacks: {  }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Estateuser:
    type: entity
    table: estateUser
    id:
        idUser:
            associationKey: true
        idEstate:
            associationKey: true
 
    manyToOne:
        users:
            targetEntity: User
            joinColumn:
                name: idUser
                referencedColumnName: id
    manyToOne:
        estates:
            targetEntity: Estate
            joinColumn:
                name: idEstate
                referencedColumnName: id


Je sèche et ça commence à être chronophage .. Quelqu'un sairait-il m'aider ?
Un coup de main serait vraiment appréciable, merci d'avance !