4

我在尝试使用 Propel ORM 从 symfony 项目中的现有数据库构建模型时出错。

错误是这样的:

build-propel.xml:474:20:双向定义外键a_table_on_my_schema_FK_1表示的1:1关系;Propel 目前不支持此功能(如果您必须同时拥有两个外键约束,请考虑使用自定义 SQL 文件添加此约束。)

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 }
[...]

我认为这个错误是因为自引用表。

我需要在许多元素之间实现一个不规则的关系,所以这个实现是一个很好的方法。但是导致我在施工时出现这个问题。

你能给我一些线索吗?有人有这个错误吗?你会怎么做?

谢谢你!!:D

4

1 回答 1

0

已解决:正如@Colin Fine 所说,这不是自引用表错误。错误出现在源数据库上。我从 mysql 上的现有数据库生成了 schema.yml。错误就在那里:引用的目标属性不是表的标识符,而是引用属性本身。因此,生成的 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 }
[...]

self_referenced_table 应该是:

_attributes: { phpName: SelfReferencedTable } [...]
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: TABLE_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }
[...]

于 2011-07-14T09:55:45.850 回答