3

私のサイトでは、他のサイト固有のデータベースに関連する中央ユーザー データベースを含む 2 つのデータベースを使用しています。

呼び出すだけで十分な場合もありますnew User(array('db'=>'adapter1'));(ただし、決して便利ではありません)。ただし、異なるデータベースのテーブル間の関係を宣言する場合など、これを行う方法はありません。

Zend_Db_Table_Abstract クラス内から使用するデータベース アダプタを指定する方法を知っている人はいますか?

ありがとう!

4

4 に答える 4

4

これに戻るのはかなり遅いですが、ここでの答えはどれも私にとってはまったくうまくいきませんでした。'tdb'を使用する必要があるデータベースモデルのいくつかを選択し、それを自動的に実行するために、これらの各クラスに次のコードを追加しました。

protected function _setupDatabaseAdapter()
{
    $this->_db = Zend_Registry::get('tdb');
    parent::_setupDatabaseAdapter();
}

途中でご提案ありがとうございました!

于 2009-09-23T07:24:58.983 に答える
3

Zend_Db_Table_Abstract は、デフォルトのデータベース アダプタを設定する静的メソッドを提供します。これは次のように行います。

Zend_Db_Table_Abstract::setDefaultAdapter($adapter);

これで、すべての Table オブジェクトがデフォルトでアダプターを使用します。

注: オンライン ドキュメントではこれが明確でない場合があるため、2 番目に確認するのに最適な場所は API です: http://framework.zend.com/apidoc/core/

于 2009-05-07T03:17:37.857 に答える
1

コンストラクターでクラス変数 $_db を正しいアダプターに設定できます。

global $adapter1; //There are better ways than using a global variable

$this->_db = $adapter1;

コンストラクターでアダプターオブジェクトを参照できると仮定します。移植性はないようですが、うまくいくと思います。

于 2009-05-06T21:21:13.390 に答える
1

init 関数を使用Zend_Db_Adapter_Abstract,できますが、クラスで使用する必要はありません。必要なものをセットアップするために使用できます。_setAdapterレジストリ キーを指定する文字列を受け入れます。

public function init()
{
    $this->_setAdapter('tdb');
}
于 2010-08-15T22:42:42.157 に答える