3

Symfony プロジェクトの DAL として Propel を使用しています。アプリケーションを 2 つ以上のデータベースで動作させることができないようです。

ここに私の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ません。

この問題を解決する方法はありますか?

4

3 に答える 3

1

また、タスクを実行するときは、接続を指定する必要があります。次に例を示します。

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

これは私にとってはうまくいきました。

于 2009-04-20T10:44:47.250 に答える
1

Propel::getConnection('db2')を使用して、接続を手動で取得することもできます。

「db1」、「db2」と呼ばれるものは接続名であることに注意してください。さまざまなログイン/権限 (読み取り専用など) を使用して、同じデータベースに複数の接続を行うことができます。

テスト目的には非常に適しています。別のデータベースで同じ接続名を使用して実行できます。それで本番データベースをクラッシュさせる方法はありません:)

于 2009-05-08T08:53:24.513 に答える