2010-05-20 7 views
0

요약 : 다음 YML을 사용하여 내 YML에없는 외래 키 (role_id)에 대한 참조를 얻습니다.교리 설정 방법 다 대다 다 대다 관계

문제 : 나는 많은 역할의 (모두 많은 사용자를 가질 수 있습니다)에 속할 수있는 사용자 (CreditName)가 시스템을 만들려고 해요. 또한 많은 사용자 + 역할을 포함 할 수있는 많은 프로젝트가 있으므로 프로젝트가 사용자와 역할 간의 다 - 대 - 다 관계에 대한 참조 클래스의 항목과 다 - 대 - 이상의 관계를 갖기를 바랍니다.

여기에 관련 YML이다 : 나는 다음과 같은 얻을 데이터베이스 생성하려고이 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) } 

:

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) 

이 곳 'FOREIGN KEY입니다 (ROLE_ID) '어떻게오고 그것을 수정합니까? 감사!

+0

을 구축 할 두 개의 기본 키를 가질 수 없습니다 , 비록 당신이 여러 인덱스를 가질 수 있습니다. 어쩌면 기본 ID가 2 개인 ID 열을 가질 수 있습니다. 사실 문제가 발생하고 있습니까? – LTME

답변

0

어쩌면 ProjectCreditNameRole에 foreignAliases 모두해야 ProjectCreditNameRoles

1

나는 u는 그 라인과 실행 심포니 교리를 제거 할 필요가 있다고 생각한다 : mysql에서 --all

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