요약 : 다음 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) '어떻게오고 그것을 수정합니까? 감사!
을 구축 할 두 개의 기본 키를 가질 수 없습니다 , 비록 당신이 여러 인덱스를 가질 수 있습니다. 어쩌면 기본 ID가 2 개인 ID 열을 가질 수 있습니다. 사실 문제가 발생하고 있습니까? – LTME