以下の例のように定義したテーブルがいくつかあります。
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 に強制するにはどうすればよいですか?