摘要: 使用以下YML,我得到一个不在我的YML中的FOREIGN KEY(role_id)的引用。
问题: 我正在尝试创建一个系统,其中有一个用户(CreditName)可以属于许多角色(所有角色都可以有很多用户)。还有许多项目,可以包含许多用户+角色,所以我希望项目与用户和角色之间的多对多关系的refclass中的条目具有多对多关系。 / p>
以下是相关的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) }
使用doctrine / symfony尝试使用此YML生成数据库,我得到以下内容:
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 :(得分:1)
我认为你需要删除这些行并运行symfony doctrine:build --all
CreditNameRoles:
id: { type: integer}
relations:
CreditName: { foreignAlias: CreditNameRoles, onDelete: CASCADE }
Role: { foreignAlias: CreditNameRoles, onDelete: CASCADE }
答案 1 :(得分:0)
也许在ProjectCreditNameRole中,您的foreignAliases应该都是ProjectCreditNameRoles