Просмотр исходного кода

[DOCUMENTATION] Japanese:new Zend_Db_Table_Definition

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@16944 44c647ce-9c0f-0410-b52a-842ac1e357ba
yoshida@zend.co.jp 16 лет назад
Родитель
Сommit
369c80277d
1 измененных файлов с 206 добавлено и 0 удалено
  1. 206 0
      documentation/manual/ja/module_specs/Zend_Db_Table_Definition.xml

+ 206 - 0
documentation/manual/ja/module_specs/Zend_Db_Table_Definition.xml

@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<!-- EN-Revision: 16943 -->
+<sect1 id="zend.db.table.definition">
+
+    <title>Zend_Db_Table_Definition</title>
+
+    <sect2 id="zend.db.table.definition.introduction">
+
+        <title>導入</title>
+
+        <para>
+            <classname>Zend_Db_Table_Definition</classname>は、
+            具象のインスタンス化を通じて<classname>Zend_Db_Table</classname>を使うときに、
+            使う必要のある、
+            関連を記述するために利用できるクラスと構成オプションです。
+        </para>
+
+    </sect2>
+
+    <sect2 id="zend.db.table.definition.usage">
+
+        <title>基本的な利用法</title>
+
+        <para>
+            拡張したZend_Db_Table_Abstractクラスを設定するとき、
+            利用できる同様なオプションの全てに対して、
+            定義ファイルを記述すると、
+            それらのオプションも利用できます。
+            上述の定義でテーブル全ての完全な定義を知ることができるように、
+            この定義ファイルはインスタンス化の際のクラスに渡すべきです。
+        </para>
+
+        <para>
+            下記は、テーブル名とテーブル・オブジェクトの関連を記述する定義です。
+            注:
+            'name' が定義から省略されると、
+            定義済みのテーブルのキーとして管理されます。
+            (この例は、下記の例の 'genre' 節です。)
+        </para>
+
+        <example id="zend.db.table.definition.example1">
+
+            <title>データベース・データモデルの定義を記述</title>
+
+            <programlisting language="php"><![CDATA[
+$definition = new Zend_Db_Table_Definition(array(
+    'author' => array(
+        'name' => 'author',
+        'dependentTables' => array('book')
+        ),
+    'book' => array(
+        'name' => 'book',
+        'referenceMap' => array(
+            'author' => array(
+                'columns' => 'author_id',
+                'refTableClass' => 'author',
+                'refColumns' => 'id'
+                )
+            )
+        ),
+    'genre' => null,
+    'book_to_genre' => array(
+        'referenceMap' => array(
+            'book' => array(
+                'columns' => 'book_id',
+                'refTableClass' => 'book',
+                'refColumns' => 'id'
+                ),
+            'genre' => array(
+                'columns' => 'genre_id',
+                'refTableClass' => 'genre',
+                'refColumns' => 'id'
+                )
+            )
+        )
+    ));
+]]></programlisting>
+
+        </example>
+
+        <para>
+            ご覧の通り、通常、拡張したZend_Db_Table_Abstractクラスで出会うであろう
+            オプションは、同様にこの配列で文書化されます。
+            Zend_Db_Tableコンストラクタに渡されるとき、
+            この定義は適切な列を返すために作成する必要がある
+            どんなテーブルにでも<emphasis>残存します</emphasis>。
+        </para>
+
+        <para>
+            下記は、
+            上述のデータモデルと一致するfindDependentRowset()と
+            findManyToManyRowset()呼び出しと同様に、
+            プライマリ・テーブル・インスタンス化の例です:
+        </para>
+
+
+        <example id="zend.db.table.definition.example2">
+
+            <title>記述された定義との相互作用</title>
+
+            <programlisting language="php"><![CDATA[
+$authorTable = new Zend_Db_Table('author', $definition);
+$authors = $authorTable->fetchAll();
+
+foreach ($authors as $author) {
+    echo $author->id . ': ' . $author->first_name . ' ' . $author->last_name . PHP_EOL;
+    $books = $author->findDependentRowset('book');
+    foreach ($books as $book) {
+        echo '    Book: ' . $book->title . PHP_EOL;
+        $genreOutputArray = array();
+        foreach ($book->findManyToManyRowset('genre', 'book_to_genre') as $genreRow) {
+            $genreOutputArray[] = $genreRow->name;
+        }
+        echo '        Genre: ' . implode(', ', $genreOutputArray) . PHP_EOL;
+    }
+}
+]]></programlisting>
+
+        </example>
+
+
+    </sect2>
+
+    <sect2 id="zend.db.table.definition.advanced-usage">
+
+        <title>高度な利用法</title>
+
+        <para>
+            時々、テーブル・ゲートウェイの定義、
+            及び利用の両方のパラダイムを使うことを望みます:
+            拡張と具象のインスタンス化の両方によって。
+            こうするために、定義外のどんなテーブル構成をも単純に無視してください。
+            これで、Zend_Db_Tableが定義キーの代わりに実際の参照されたクラスを探すことができます。
+        </para>
+
+        <para>
+            上記の例をもとに、
+            
+            テーブル構成のうちの1つはZend_Db_Table_Abstractを拡張したクラスであることができます。
+            その一方で、残りのテーブルは定義の一部として保ちます。
+            この新しい定義とどのように相互作用するかも示します。
+        </para>
+
+        <example id="zend.db.table.definition.example3">
+
+            <title>Zend_Db_Table定義の混合利用との相互作用</title>
+
+            <programlisting language="php"><![CDATA[
+class MyBook extends Zend_Db_Table_Abstract
+{
+    protected $_name = 'book';
+    protected $_referenceMap = array(
+        'author' => array(
+            'columns' => 'author_id',
+            'refTableClass' => 'author',
+            'refColumns' => 'id'
+            )
+        );
+}
+
+$definition = new Zend_Db_Table_Definition(array(
+    'author' => array(
+        'name' => 'author',
+        'dependentTables' => array('MyBook')
+        ),
+    'genre' => null,
+    'book_to_genre' => array(
+        'referenceMap' => array(
+            'book' => array(
+                'columns' => 'book_id',
+                'refTableClass' => 'MyBook',
+                'refColumns' => 'id'
+                ),
+            'genre' => array(
+                'columns' => 'genre_id',
+                'refTableClass' => 'genre',
+                'refColumns' => 'id'
+                )
+            )
+        )
+    ));
+
+$authorTable = new Zend_Db_Table('author', $definition);
+$authors = $authorTable->fetchAll();
+
+foreach ($authors as $author) {
+    echo $author->id . ': ' . $author->first_name . ' ' . $author->last_name . PHP_EOL;
+    $books = $author->findDependentRowset(new MyBook());
+    foreach ($books as $book) {
+        echo '    Book: ' . $book->title . PHP_EOL;
+        $genreOutputArray = array();
+        foreach ($book->findManyToManyRowset('genre', 'book_to_genre') as $genreRow) {
+            $genreOutputArray[] = $genreRow->name;
+        }
+        echo '        Genre: ' . implode(', ', $genreOutputArray) . PHP_EOL;
+    }
+}
+
+]]></programlisting>
+
+        </example>
+
+    </sect2>
+
+</sect1>