我在尝试使用 Propel ORM 从 symfony 项目中的现有数据库构建模型时遇到错误。
错误是这样的:
build-propel.xml:474:20: The 1:1 relationship expressed by foreign key a_table_on_my_schema_FK_1 is defined in both directions; Propel does not currently support this (if you must have both foreign key constraints, consider adding this constraint with a custom SQL file.)
schema.yml 文件非常庞大,但导致错误的表(第一个未正确创建)的描述如下:
self_referenced_table:
_attributes: { phpName: SelfReferencedTable }
[...]
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: JERARQUIC_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }
[...]
我认为这个错误是因为自引用表。
我需要在许多元素之间实现一个 jerarquic 关系,所以这个实现是一个很好的方法。但是在构造上给我带来了这个问题。
你能给我一些线索吗?有人有这个错误吗?你会怎么做?
谢谢!! :D
最佳答案
已解决:正如@Colin Fine 所说,这不是自引用表错误。错误在源数据库上。我从 mysql 上的现有数据库生成了 schema.yml。错误在那里:引用的目标属性不是表的标识符,而是引用属性本身。因此,生成的 schema.yml 包含错误的定义。我想我解释得不够好:
self_referenced_table 是:
_attributes: { phpName: SelfReferencedTable }<br/>
[...]<br/>
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: JERARQUIC_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }<br/>
[...]
self_referenced_table 应该是:
_attributes: { phpName: SelfReferencedTable }
[...]<br/>
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: TABLE_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }<br/>
[...]
关于mysql - 如何使用 Propel ORM 在 Symfony 中构建自引用表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532380/