8

私のアプリケーションで2つの異なるデータベースを使用するためのベストプラクティスを知っている人はいますか?

異なる場所にある両方のデータベースにデータを保存する必要があります(ホスト、ユーザー名、パスワード、すべて変更されます)。

いつものようにモデルを作成する予定で、コンストラクト セットで db ホスト、名前、パスなどを設定します。

4

4 に答える 4

18

これを「最善」の方法と呼んでいるかどうかはわかりませんが、チュートリアルで説明されている方法は次のとおりです

データベース ファイルには、デフォルトの構成があり、その一部は次のとおりです。

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "user";
$db['default']['password'] = "database";
$db['default']['database'] = "db1";

これで、別のグループを作成できます。これを group1 と呼び、名前以外はすべてデフォルトのデータベース設定と同じにしたいとします。

$db['group1']=$db['default'];
$db['group1']['database']="db2";

次に、2 番目のデータベースを使用する場合は、

$DB2 = $this->load->database('group1', TRUE); 

そして、代わりに$this->db->foo()、あなたはするでしょう$DB2->foo()

代わりに(sbaaaangのコメントで提案されているように)、$this->db=$DB2;すべてを同じに保つことができます

これをこのように複数のグループに拡張できます

 $DB1 = $this->load->database('group1', TRUE); 
 $DB2 = $this->load->database('group2', TRUE); 
 ...
 $DBn = $this->load->database('groupn', TRUE); 
于 2012-10-07T09:34:22.057 に答える
4

さて、私はここに私の解決策を書きたいと思います。なぜなら私は私が思うより少ないコードを使用したからです:

database.phpで、データベースグループを設定しました。

$database['default']['dbname'] = 'db1';
$database['second_db']['dbname'] = 'db2';

次に、モデルでは、コンストラクターを使用してデータベースに切り替え、次のように使用します。

//use db1
function __construct()
    {
        // Call the Model constructor
        parent::__construct();
         $this->load->database('default',true);
    }
//use db2
function __construct()
    {
        // Call the Model constructor
        parent::__construct();
         $this->load->database('second_db',true);
    }

誰かがもっと多くの解決策を示したいのなら、それをしてください!これらは私の2セントです。

于 2012-10-13T19:36:15.363 に答える
4

私はそれを読んだ

$db['default']['pconnect'] = FALSE;

これらが機能するには、falseである必要があります。私が間違っている場合は訂正してください。使用するすべての複数のデータベースでは、オフにする必要があります。これが良い解決策かどうかはわかりません。

于 2012-11-28T22:43:28.793 に答える