2010-05-20 126 views
0

摘要: 使用下面的YML我得到了一個FOREIGN KEY(role_id)的引用,它不在我的YML中。學說如何設置多對多關係

問題: 我試圖創建一個系統,其中有一個用戶(CreditName)誰可以屬於多個角色的(所有這些都可以有很多的用戶)。也有許多項目可以包含許多用戶和角色,所以我希望項目與refclass中的條目具有多對多關係,以實現用戶和角色之間的多對多關係。

下面是相關YML:

Project: 
    columns: 
    title:    { type: string(255), notnull: true, unique: true } 
    relations: 
    CreditNameRoles: 
     class: CreditNameRole 
     refClass: ProjectCreditNameRole 
     foreignAlias: Projects 
     onDelete: CASCADE 

ProjectCreditNameRole: 
    columns: 
    project_id:   { type: integer, primary: true } 
    credit_name_role_id: { type: integer, primary: true } 
    relations: 
    Project:    { foreignAlias: ProjectGenres, onDelete: CASCADE } 
    CreditNameRole:  { foreignAlias: CreditNameRole, onDelete: CASCADE } 

CreditName: 
    columns: 
    name:  { type: string(255) } 
    relations: 
    Roles: 
     class: Role 
     refClass: CreditNameRole 
     foreignAlias: CreditNames 
     onDelete: CASCADE 

CreditNameRole: 
    columns: 
    id:    { type: integer} 
    credit_name_id: { type: integer, primary: true } 
    role_id:   { type: integer, primary: true } 
    relations: 
    CreditName:  { foreignAlias: CreditNameRoles, onDelete: CASCADE } 
    Role:   { foreignAlias: CreditNameRoles, onDelete: CASCADE } 

Role: 
    columns: 
    name:   { type: string(255) } 

使用學說/ symfony的嘗試和使用該陽明生成我得到以下數據庫:

bash-3.2$ ./symfony doctrine:build --all --no-confirmation 

    SQLSTATE[HY000]: General error: 1005 Can't create table 'database_name.#sql-68_148' (errno: 150). Failing Query: "ALTER TABLE credit_name_role ADD CONSTRAINT crpc FOREIGN KEY (role_id) REFERENCES project_credit_name_role(credit_name_role_id)". Failing Query: ALTER TABLE credit_name_role ADD CONSTRAINT crpc FOREIGN KEY (role_id) REFERENCES project_credit_name_role(credit_name_role_id) 

這哪裏是「外鍵(ROLE_ID )'來自我如何改正它?謝謝!

+0

在MySQL中,你不能有兩個主鍵,儘管你可以有多個索引。可能有兩個ID列與主:真正導致這個問題? – LTME 2010-05-20 22:22:18

回答

0

也許在你的ProjectCreditNameRole foreignAliases都應該ProjectCreditNameRoles

1

我覺得你需要刪除這些線路和運行symfony的學說:打造 - 所有

CreditNameRoles: 
id:    { type: integer} 
relations: 
    CreditName:  { foreignAlias: CreditNameRoles, onDelete: CASCADE } 
    Role:   { foreignAlias: CreditNameRoles, onDelete: CASCADE }