1

以下の例のように定義したテーブルがいくつかあります。

class TableA extends Zend_Db_Table_Abstract
{
    protected $_schema          = 'schema1';
    protected $_name            = 'tablea';
}

class TableB extends Zend_Db_Table_Abstract
{
    protected $_schema          = 'schema2';
    protected $_name            = 'tableb';
}

これは、1 つのデフォルトの Db アダプターを使用して完全に機能するようです (2 つのスキーマが同じサーバー上にあるため)。

次のようなコードが機能します。

$tableA = new TableA();
$select = $tableA->select();
// $select->__toString() outputs: SELECT * FROM `schema1`.`tablea`

ただし、Zend Framework のテーブル リレーションシップ関数 (つまり、findDependantRowset() または findManyToManyRowset()) で同じモデルを使用しようとすると、クエリはデフォルト アダプタのスキーマを使用して実行しようとし、適切なスキーマを使用しません。モデルクラスで定義されています。

これはバグですか?デフォルトの Db アダプタでデフォルトとして定義されたスキーマではなく、テーブル クラスで定義したスキーマを使用するように ZF に強制するにはどうすればよいですか?

4

2 に答える 2

-1

データベース ビュー テーブルを使用して 2 つのスキーマのデータをマージし、Zend Framework を使用してそのテーブルからデータを取得できると思います。

于 2009-01-13T05:34:10.253 に答える