mysql - 如何使用 Propel ORM 在 Symfony 中构建自引用表

标签 mysql symfony1 propel self-reference

我在尝试使用 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/

相关文章:

php - 使用 Symfony2 形式插入 1.6 i18n

php - 为什么我不能使用 propel orm 在 symfony 中构建我的数据库?

php - 为什么我的查询不起作用?

php/symfony/doctrine 内存泄漏?

php - 将 symfony 的依赖注入(inject)组件与其他 php 类一起使用

mysql - 子查询中的 Doctrine 子查询

php - 我如何检查表名在 Propel 中是否有效?

sql - 选择查询问题

php - 自动更新 Wordpress 帖子以生成 slug

java - 如何线程安全地读取和写入数据库?