php - 插入多数据库建模

标签 php database-design model propel

我刚刚开始使用 Propel,我喜欢它,但我有一个关于如何利用多个数据库连接的问题。我知道我可以在我的架构中设置一些内容来连接到多个不同的数据库,但我很好奇如何在代码中处理这个问题。

我遇到的问题是多个数据库,每个数据库的架构都略有不同,没有数据仓库。结果我得到了类似以下内容:

databaseName: westCoastUsers
table: users
column1: email
column2: password
column3: FirstName

databaseName: eastCoastUsers
table: users
column1: email
column2: password
column3: firstName
column4: lastName

现在在 PHP 非 Propel 版本中,我正在手动完成所有这些操作,并根据需要手动切换数据库。我希望能够简化一些事情,并且我很好奇如何对此进行建模。有没有一种方法可以让我拥有像 eastCoastUser 和 westCoastUser 模型这样的模型,每个模型都引用正确的数据库/等等,或者我是否试图插入不支持的东西?

我读到了这个:How to use two database in propel但不确定如何在代码中实际执行它。

感谢您的帮助

最佳答案

在架构文件中,您可以提供代表表的类的名称。它们不必使用与表相同的名称。您可以使用 phpName 来执行此操作表元素上的属性。

例如,您的 schema.xml 可能包含类似的内容

<database name="westCoastUsers">
  <table name="users" phpName="WestCoastUser">
    ...columns here...
  </table>
  ...
</database>
<database name="eastCoastUsers">
  <table name="users" phpName="EastCoastUser">
    ...columns here...
  </table>
</database>

(编辑,注意数据库元素上的name="westCoastUser"指的是数据库的名称,而不是具有相似名称的类)

然后在构建时,propel 将生成 WestCoastUser , WestCoastUserQuery , WestCoastUserPeer , EastCoastUser , EastCoastUserQuery并且,EastCoastUserPeer 。每个类都将使用您的架构中定义的数据库进行连接。

关于php - 插入多数据库建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270008/

相关文章:

database - 在数据库列中存储定界列表真的那么糟糕吗?

sql - 我应该设计一个 SQL Server 数据库来依赖 UNION 还是避免它?

javascript - 如何在 javascript 中创建模型以确保所有属性都存在

ruby-on-rails - ruby on rails has_one与唯一的关联

mysql - 在数据库中存储 100K 个不同的表

c++ - 如何在 C++ 中分割边缘

php - 将 Javascript 结果保存为 PHP 值?

php - Yii2 在后台发送电子邮件

php - CGI 效率低下,但现在使用的是什么?

php - 动态创建的 HTML 文件输入元素不发布数据