我使用propel orm作为数据库抽象层。 我想为diffenrent模块定义不同的schema.xml文件。 例如。用于处理用户和角色的user.xml.schema,或用于应用程序模型的app.schema.xml。
我的问题是,我想引用user.schema.xml的用户表。我可以通过标记来处理这个问题,但是我想为用户模式表使用另一个表前缀。 运行propel-gen创建两个sql文件(一个用于user.schema,一个用于app.schema),但问题是,用户模式表生成了两次。首先使用用户模式文件的正确表前缀,使用应用模式文件前缀的其他表前缀。 外键还引用了错误的表(来自带有app.schema.xml前缀的表)。
我不知道有什么方法可以阻止这种行为。 任何提示?
答案 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。