用外部模式推出错误的表前缀

时间:2012-01-23 18:23:20

标签: php-5.3 propel

我使用propel orm作为数据库抽象层。 我想为diffenrent模块定义不同的schema.xml文件。 例如。用于处理用户和角色的user.xml.schema,或用于应用程序模型的app.schema.xml。

我的问题是,我想引用user.schema.xml的用户表。我可以通过标记来处理这个问题,但是我想为用户模式表使用另一个表前缀。 运行propel-gen创建两个sql文件(一个用于user.schema,一个用于app.schema),但问题是,用户模式表生成了两次。首先使用用户模式文件的正确表前缀,使用应用模式文件前缀的其他表前缀。 外键还引用了错误的表(来自带有app.schema.xml前缀的表)。

我不知道有什么方法可以阻止这种行为。 任何提示?

1 个答案:

答案 0 :(得分:1)

您无法向一个数据库添加不同的表前缀,也无法在tablePrefix标记上添加table属性。让我解释一下,我知道,即使对于同一个数据库,你也可以为每个XML模式指定一个tablePrefix,但如果你试图添加关系,它会导致错误。我不知道它是不是一个bug或不,AFAIK tablePrefix应该在table级别定义...如果没有关系,你将得到一个干净的SQL文件(如果你没有设置propel.packageObjectModel构建属性,那么你会得到两个到true

您可以阅读:http://www.propelorm.org/reference/schema.html。所以我认为,不幸的是,不可能做你想做的事。 顺便说一下,你想要实现的目标在Propel doc中被称为multi component data model