PropelORM v1多个数据库

Luk*_*awa 10 php propel

设置PropelORM以处理多个数据库时,我几乎没有问题.我在文档中找不到任何有用的东西.

  1. 从多个数据库生成模式

    我更喜欢先对数据库模式进行更改然后再运行

    $ propel-gen . reverse
    
    Run Code Online (Sandbox Code Playgroud)

    获取schema.xml.如果我的系统包含多个数据库怎么办?它可以生成多个模式吗?我从文档中知道buildtime-conf.xml必须创建,但它对我没有任何作用.

  2. 生成类

    假设我创建了不同的模式blog.schema.xmlplatform.schema.xml.是否有可能:

    1. 每个模式都有不同的类前缀?在build.properties中我可以设置propel.classPrefix但是这将对每个模式全局工作.

    2. 每个架构都有不同的项目名称?再次在我可以设置的build.properties中propel.project,它将在classes目录中创建一个特定的目录.现在所有课程都会去同一个地方.如果我将在两个模式中使用相同的表名,则一个类将覆盖另一个类.

我可以自己解决的问题是为某个数据库设置2个不同的目录,但我更喜欢更优雅的解决方案.

DaO*_*gre 1

<database>您可以从您的架构中发布该行吗?

只要您具备以下条件:

<database package="blog" name="blog" defaultIdMethod="native">
Run Code Online (Sandbox Code Playgroud)

在您的 blog.schema.xml 内部,它应该为您生成一个新目录。如果你让延迟加载为你服务,你是对的,你会遇到冲突,所以我只是手动在我的表中预先添加一些东西schema.xml(这可能不是处理事情的最有效的方法)。

但你可以这样做:

  1. 在 blog.schema.xml 中:

     <table name="users" phpName="blogUsers" idMethod="native">
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在 platform.schema.xml 中:

     <table name="users" phpName="platformUsers" idMethod="native">
    
    Run Code Online (Sandbox Code Playgroud)

这对我来说效果很好。