Symfony1 Symfony中支持多个数据库

Symfony1 Symfony中支持多个数据库,symfony1,Symfony1,我正在使用Propel作为我的Symfony项目的DAL。我似乎无法让我的应用程序跨两个或多个数据库工作 这是我的schema.yml: db1: lkp_User: pk_User: { type: integer, required: true, primaryKey: true, autoIncrement: true } UserName: { type: varchar(45), requ

我正在使用Propel作为我的Symfony项目的DAL。我似乎无法让我的应用程序跨两个或多个数据库工作

这是我的schema.yml:

db1:
  lkp_User:
    pk_User:                     { type: integer, required: true, primaryKey: true, autoIncrement: true }
    UserName:                    { type: varchar(45), required: true }
    Password:                    longvarchar
    _uniques:
      Unique:                    [ UserName ]

db2:
  tesco:
    Id:                  { type: integer, required: true, primaryKey: true, autoIncrement: true }
    Name:                { type: varchar(45), required: true }
    Description:         longvarchar
这是数据库。yml:

dev:
  db1:
    param:
      classname: DebugPDO
test:
  db1:
    param:
      classname: DebugPDO
all:
  db1:
    class: sfPropelDatabase
    param:
      classname: PropelPDO
      dsn: 'mysql:dbname=bpodb;host=localhost'   #where the db is located
      username: root
      password: #pass
      encoding: utf8
      persistent: true
      pooling: true


  db2:
    class: sfPropelDatabase
    param:
      classname: PropelPDO
      dsn: 'mysql:dbname=mystore2;host=localhost'   #where the db is located
      username: root
      password: #pass
      encoding: utf8
      persistent: true
      pooling: true
当我调用
php-symfony-spreep-build-model
时,只生成
db1
,而不生成
db2


知道如何解决这个问题吗?

!最重要的是,您必须根据%dbname%.schema.yml为架构命名。通过这种方式,Symfony将能够将YML分配给正确的数据库。

此外,在运行任务时,您还应指定连接,例如:

symfony propel:build-all-load --connection=my_connection

这对我很有效,希望能有所帮助。

您也可以使用
spreep::getConnection('db2')
手动检索连接

请记住,所谓的“db1”、“db2”是连接名。您可以使用不同的登录/权限(如只读等)与同一数据库建立多个连接


这对于测试来说非常好:您可以使用相同的连接名在不同的数据库中进行测试。没有办法让你的生产数据库崩溃:)

太糟糕了。谢谢你的提示!