導入

Zend_Db_Table_Definition(日本語)

導入

Zend_Db_Table_Definitionは、 具象のインスタンス化を通じてZend_Db_Tableを使うときに、 使う必要のある、 関連を記述するために利用できるクラスと構成オプションです。

基本的な利用法

拡張した Zend_Db_Table_Abstract クラスを設定するとき、 利用できる同様なオプションの全てに対して、 定義ファイルを記述すると、 それらのオプションも利用できます。 上述の定義でテーブル全ての完全な定義を知ることができるように、 この定義ファイルはインスタンス化の際のクラスに渡すべきです。

下記は、テーブル名とテーブル・オブジェクトの関連を記述する定義です。 注: 'name' が定義から省略されると、 定義済みのテーブルのキーとして管理されます。 (この例は、下記の例の 'genre' 節です。)

Example #1 データベース・データモデルの定義を記述

  1. span style="color: #ff0000;">'author''name' => 'author',
  2.         'dependentTables''book')
  3.         ),
  4.     'book''name' => 'book',
  5.         'referenceMap''author''columns' => 'author_id',
  6.                 'refTableClass' => 'author',
  7.                 'refColumns' => 'id'
  8.                 )
  9.             )
  10.         ),
  11.     'genre''book_to_genre''referenceMap''book''columns' => 'book_id',
  12.                 'refTableClass' => 'book',
  13.                 'refColumns' => 'id'
  14.                 ),
  15.             'genre''columns' => 'genre_id',
  16.                 'refTableClass' => 'genre',
  17.                 'refColumns' => 'id'
  18.                 )
  19.             )
  20.         )
  21.     ));

ご覧の通り、通常、拡張した Zend_Db_Table_Abstract クラスで出会うであろう オプションは、同様にこの配列で文書化されます。 Zend_Db_Table コンストラクタに渡されるとき、 この定義は適切な列を返すために作成する必要がある どんなテーブルにでも残存します

下記は、 上述のデータモデルと一致する findDependentRowset()findManyToManyRowset()呼び出しと同様に、 プライマリ・テーブル・インスタンス化の例です:

Example #2 記述された定義との相互作用

  1. span style="color: #ff0000;">'author'': '' ''book''    Book: ''genre', 'book_to_genre''        Genre: '', '

高度な利用法

時々、テーブル・ゲートウェイの定義、 及び利用の両方のパラダイムを使うことを望みます: 拡張と具象のインスタンス化の両方によって。 こうするために、定義外のどんなテーブル構成をも単純に無視してください。 これで、Zend_Db_Tableが定義キーの代わりに実際の参照されたクラスを探すことができます。

上記の例をもとに、 テーブル構成のうちの1つはZend_Db_Table_Abstractを拡張したクラスであることができます。 その一方で、残りのテーブルは定義の一部として保ちます。 この新しい定義とどのように相互作用するかも示します。

Example #3 Zend_Db_Table定義の混合利用との相互作用

  1. span style="color: #ff0000;">'book''author''columns' => 'author_id',
  2.             'refTableClass' => 'author',
  3.             'refColumns' => 'id''author''name' => 'author',
  4.         'dependentTables''MyBook')
  5.         ),
  6.     'genre''book_to_genre''referenceMap''book''columns' => 'book_id',
  7.                 'refTableClass' => 'MyBook',
  8.                 'refColumns' => 'id'
  9.                 ),
  10.             'genre''columns' => 'genre_id',
  11.                 'refTableClass' => 'genre',
  12.                 'refColumns' => 'id''author'': '' ''    Book: ''genre', 'book_to_genre''        Genre: '', '

導入