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

发布于 2024-12-28 13:02:58 字数 377 浏览 0 评论 0原文

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

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

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

I am using propel orm as database abstraction layer.
I want to define different schema.xml files for diffenrent modules.
E.g. user.xml.schema for handling users and roles, or app.schema.xml for the application model.

My problem is, I want to reference to the user table of the user.schema.xml. I can handle this by the tag, but I want to use another table prefix for the user schema tables.
Running propel-gen creates two sql files (one for the user.schema and one for the app.schema), but the problem is, that the user-schema tables are generated twice. First with correct table prefix of the user schema file and the others with the prefix of the app schema file.
The foreign key also references to the wrong tables (that from the table with the prefix of the app.schema.xml).

I do not know any way to prevent this behaviour.
Any hints?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流心雨 2025-01-04 13:02:58

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

您可以阅读:http://www.propelorm.org/reference/schema.html。所以我认为,不幸的是,不可能做你想做的事情。
顺便说一句,您想要实现的目标称为 多组件数据模型在 Propel 文档中。

You cannot add different table prefixes to one database, and there is no way to add a tablePrefix attribute on the table tag. Let me explain a bit more, I know, you can specify a tablePrefix per XML schema even for a same database, but it leads to errors if you try to add relationship.. I don't know whether it's a bug or not, AFAIK the tablePrefix should be defined at the table level… Without relationship, you'll get a clean SQL file (or two if you don't set the propel.packageObjectModel build property to true.

You can read: http://www.propelorm.org/reference/schema.html. So I think, it's not possible to do what you would like to do unfortunately.
BTW, what you want to achieve is called multi component data model in the Propel doc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文