2010-04-05 60 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