0

私は自分のプロジェクトに 2 つのデータベースを使用しています。設定で。yml ファイル

all:
  master:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:host=localhost;dbname=livetloc'
      username: root
       password: console
client:
class: sfDoctrineDatabase
param:
  dsn: 'mysql:host=localhost;dbname=testloc'
  username: root
  password: console

次に、スキーマとモデルを生成しました。ここで、db 接続を動的に変更する必要があります。プロジェクトに新しいコードを書く場合、testloc db でテストする必要があります。その後、 liveloc db に変更します。このプロジェクトは 4 人のメンバーによって使用されます。私はそれに新しい機能を追加しています.4人のメンバーが同時にプロジェクトを使用していますが、私は「testloc」データベースを使用しています. 他の人は「Liveloc」 db を使用しています。単一の環境内で特定のログイン特定のユーザーのデータベースを変更するソリューションは何ですか?

4

1 に答える 1

0

以前のプロジェクトでその必要がありましたが、これが私がそれを解決した方法です:

あなたのコントローラーで:

// we get the params in your databases.yml file for your data source "client"
$dbParams = sfContext::getInstance()->getDatabaseManager()->getDatabase('client');

$paramsArray = array(
    $dbParams->getParameter('dsn'), 
    $dbParams->getParameter('username'),
    $dbParams->getParameter('password'),
    'testloc'
);

// setting "false" avoids this new connection to replace your default one
$newConnection = Doctrine_Manager::getInstance()->openConnection($params, 'name_of_connection', false);

$query = "SELECT * FROM table";
$result = $newConnection->fetchAll($query); 

symfony コンテキストを使用するため、これはあまりクールではありませんが、うまくいきます ;)。テストのコンテキストでは、それは良いと思います。

于 2013-03-29T17:23:22.130 に答える