2010-04-05 4 views
0

Je génère des modèles de mon MySQL db. Il génère une collection de clés étrangères correctement, mais pas l'inverse ... Est-ce supposé être 'by-design', ou est-ce que je fais quelque chose de mal?PHP Doctrine: problème de génération?

code pseudo alerte

User: 
    UserId pk 
    LocationId fk  //User location 

Location 
    LocationId pk 
    UserId fk   //Location owner 

Code généré:

class User() { 
    hasMany('Location') //for locations owned by the user 

    //BUT NOT THIS ONE: 
    //hasOne('Location_1') //for current location of user 
} 

class Location() { 
    hasMany('User') //for users which are on that location 

    //AND NOT THIS ONE 
    //hasOne('User_1') //for location owner 
} 

Répondre

1

Vous devez définir une table d'association. Votre pseudo code est trompeur - dans plusieurs à plusieurs relations, aucune clé étrangère n'est utilisée dans les classes User ou Location, mais dans la classe d'association.

Voir la page 76. PDF manual

+0

Non, le code est exact. Cela n'a pas besoin d'une classe d'association, elle a besoin d'une relation un-à-plusieurs DEUX fois. – Ropstah

+0

User-> locationid est mis à jour chaque fois que l'emplacement d'un utilisateur change. Lorsqu'un emplacement est inséré, un utilisateur est affecté en tant que propriétaire. – Ropstah

+0

Désolé, j'ai mal interprété votre question. Juste une supposition, mais peut-être que vous devriez définir explicitement _owningSide_? http://www.doctrine-project.org/documentation/manual/1_2/en/defining-models#relationships – jholster