2010-04-05 61 views
0

我从我的Mysql数据库中生成模型。它会正确地生成一个外键集合,但不是其他方式... 这应该是'按设计',还是我做错了什么?PHP学说:代的问题?

伪代码警报

User: 
    UserId pk 
    LocationId fk  //User location 

Location 
    LocationId pk 
    UserId fk   //Location owner 

生成的代码:

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 
} 

回答

1

您需要定义的关联表。您的伪代码具有误导性 - 在多对多关系中,在用户或位置类中没有使用外键,但在关联类中使用了外键。

请参阅PDF manual第76页。

+0

不,代码是正确的。这不需要关联类,它需要一次一对多的关系两次。 – Ropstah 2010-04-06 00:21:54

+0

用户 - > locationid在用户位置发生变化时更新。当插入位置时,会将用户分配为所有者。 – Ropstah 2010-04-06 00:23:11

+0

对不起,我误解了你的问题。只是一个猜测,但也许你应该明确地定义_owningSide_? http://www.doctrine-project.org/documentation/manual/1_2/en/defining-models#relationships – jholster 2010-04-06 12:10:18