我使用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
这是databases.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 propel-build-model
时,仅生成db1
,db2
则不会。
知道如何解决这个问题吗?
答案 0 :(得分:6)
I got this issue working!最重要的是您必须根据%dbname%.schema.yml命名您的架构。通过这种方式,Symfony将能够将ymls分配给正确的数据库。
答案 1 :(得分:1)
同样在运行任务时,您应该指定连接,例如:
symfony propel:build-all-load --connection=my_connection
这对我有用,希望它有所帮助。
答案 2 :(得分:1)
您还可以使用Propel::getConnection('db2')
手动检索连接。
请记住,您所谓的“db1”,“db2”是连接名称。您可以使用各种登录/权限(如只读等)与同一数据库建立多个连接。
它非常适合测试目的:您可以使用不同的数据库使用相同的连接名称。无法使用以下方法使生产数据库崩溃:)