Changeset 4588

Show
Ignore:
Timestamp:
06/28/08 14:51:11 (12 months ago)
Author:
moksahero
Message:

worked on it half way

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/0.11/manual/docs/ja/basic-schema-mapping.txt

    r4531 r4588  
    1 ++ 序文 
     1++ はじめに 
     2 
    23この章と節ではDoctrineで基本的なスキーママッピングを行う方法を説明します。この章の概念に慣れると次の方法がわかります: 
    34 
     
    910Doctrineの範囲内ですべてのカラムマッピングはDoctrine_RecordのhasColumn()メソッドを通して行われます。 hasColumnは4つの引数を取ります: 
    1011 
    11 # **カラム名**   カラム名とオプションのエイリアスを指定する文字列です。これはすべてのカラムに対して必要です。から無名に対してエイリアスを指定したい場合、'[columnName] as [columnAlias]'フォーマットを使用する必要があります。 
     12# **カラム名**   カラム名とオプションのエイリアスを指定する文字列です。これはすべてのカラムに対して必要です。カラム名に対してエイリアスを指定したい場合、'[columnName] as [columnAlias]'のフォーマットを使います。 
     13 
    1214# **カラムタイプ**   カラムタイプを指定する文字列です。カラムタイプのセクションをご覧下さい。 
     15 
    1316# **カラムの長さ**  カラムの長さを指定する整数です。カラムタイプの中には与えられたポータルタイプだけでなく与えられた長さにも依存するものがあります。例えば、長さ1000を持つ文字列のタイプはmysql上ではネイティブのタイプのTEXTに変換されます。 
     17 
    1418# **カラムの制約とバリデータ** 与えられたカラムに適用される制約とバリデータを指定する配列です。 
    1519 
    16 バリデータ/カラムの制約とカラム長さフィールドはオプションであることに注意して下さい。長さは長さの引数に対して**null**を使用して省略されることがあります、これによってdoctrineはデフォルトの長さを使用できるようになり、バリデーションもしくはカラム制約に対して4番目の引数が許可されます。 
     20バリデータ/カラムの制約とカラム長さフィールドはオプションであることに注意して下さい。長さは長さの引数に対して **null** を使用して省略されることがあります、これによってdoctrineはデフォルトの長さを使用できるようになり、バリデーションもしくはカラム制約に対して4番目の引数が許可されます。 
    1721 
    1822最初の例に取り組んでみましょう。次の定義は'emails'テーブルを参照するEmailクラスを定義します。Emailクラスは2つのカラムid(一つはオートインクリメントの主キーのカラム)と名前がaddressである文字列カラムを持ちます。 
     
    3741</code> 
    3842 
     43YAMLスキーマファイルでモデルを定義した場合は以下の様になります。 
     44 
     45<code type="yaml"> 
     46--- 
     47Email: 
     48  tableName: emails 
     49  columns: 
     50    address: 
     51      type: string(200) 
     52      notblank: true 
     53      email: true 
     54</code> 
     55 
     56 
    3957ではこのクラスに対するエクスポートスクリプトを作成してみましょう: 
     58 
    4059 
    4160<code type="php"> 
     
    5473</code> 
    5574 
    56 スクリプトは次のSQLを実行します(ここではデータベースバックエンドとしてMySQLを使用しています): 
     75 
     76このスクリプトは次のSQLを実行します(ここではデータベースバックエンドとしてMySQLを使用しています): 
    5777 
    5878<code> 
    59 CREATE TABLE emails (id INT NOT NULL AUTO_INCREMENT, address VARCHAR(200) NOT NULL) 
    60 </code> 
    61  
     79CREATE TABLE emails (id BIGINT AUTO_INCREMENT, address VARCHAR(200), PRIMARY KEY(id)) ENGINE = INNODB; 
     80</code> 
    6281 
    6382++ テーブルとクラスの命名 
     83 
    6484Doctrineはレコードクラス名からテーブル名を自動的に作成します。このため、次のルールを使用してレコード名を名付けることが推奨されます: 
    6585 
     
    6787* アンダースコアは許可されます 
    6888* 最初の文字は大文字でなければなりません 
    69 * クラス名は次のものの一つにはできません(これらのキーワードはDQL APIで保存されます):  
    70  * {{ALL}}, {{AND}}, {{ANY}}, {{AS}}, {{ASC}}, {{AVG}}, {{BETWEEN}}, {{BIT_LENGTH}}, {{BY}}, {{CHARACTER_LENGTH}}, {{CHAR_LENGTH}}, {{COUNT}}, {{CURRENT_DATE}}, {{CURRENT_TIME}}, {{CURRENT_TIMESTAMP}}, {{DELETE}}, {{DESC}}, {{DISTINCT}}, {{EMPTY}}, {{EXISTS}}, {{FALSE}}, {{FETCH}}, {{FROM}}, {{GROUP}}, {{HAVING}}, {{IN}}, {{INDEXBY}}, {{INNER}}, {{IS}}, {{JOIN}}, {{LEFT}}, {{LIKE}}, {{LOWER}}, {{MAX}}, {{MEMBER}}, {{MIN}}, {{MOD}}, {{NEW}}, {{NOT}}, {{NULL}}, {{OBJECT}}, {{OF}}, {{OR}}, {{ORDER}}, {{OUTER}}, {{POSITION}}, {{SELECT}}, {{SOME}}, {{SUM}}, {{TRIM}}, {{TRUE}}, {{UNKNOWN}}, {{UPDATE}}, {{UPPER}} and {{WHERE}}. 
     89* クラス名は次のものの一つにはできません(これらのキーワードはDQL APIで保存されます): 
     90* {{ALL}}, {{AND}}, {{ANY}}, {{AS}}, {{ASC}}, {{AVG}}, {{BETWEEN}}, {{BIT_LENGTH}}, {{BY}}, {{CHARACTER_LENGTH}}, {{CHAR_LENGTH}}, {{COUNT}}, {{CURRENT_DATE}}, {{CURRENT_TIME}}, {{CURRENT_TIMESTAMP}}, {{DELETE}}, {{DESC}}, {{DISTINCT}}, {{EMPTY}}, {{EXISTS}}, {{FALSE}}, {{FETCH}}, {{FROM}}, {{GROUP}}, {{HAVING}}, {{IN}}, {{INDEXBY}}, {{INNER}}, {{IS}}, {{JOIN}}, {{LEFT}}, {{LIKE}}, {{LOWER}}, {{MAX}}, {{MEMBER}}, {{MIN}}, {{MOD}}, {{NEW}}, {{NOT}}, {{NULL}}, {{OBJECT}}, {{OF}}, {{OR}}, {{ORDER}}, {{OUTER}}, {{POSITION}}, {{SELECT}}, {{SOME}}, {{SUM}}, {{TRIM}}, {{TRUE}}, {{UNKNOWN}}, {{UPDATE}}, {{UPPER}} and {{WHERE}}. 
    7191 
    7292**例:** {{My_PerfectClass}} 
     
    7494異なるネーミングスキーマを使用する場合、{{setTableDefinition()}}メソッドの{{setTableName()}}メソッドを使用してこれをオーバーライドできます。 
    7595 
    76  
    7796++ テーブルオプション 
    78 Doctrineは様々なテーブルオプションを提供します。すべてのテーブルオプションは{{Doctrine_Record::option($optionName, $value)}}を通して設定できます。 
     97 
     98Doctrineは様々なテーブルオプションを提供します。すべてのテーブルオプションは {{Doctrine_Record::option($optionName, $value)}} を通して設定できます。 
    7999 
    80100例えば、MySQLを使用していてINNODBテーブルを使用したい場合次のように行われます: 
     
    92112</code>  
    93113 
    94 次の例において照合順序と文字セットオプションを設定します: 
     114<code type="yaml"> 
     115--- 
     116MyInnoDbRecord: 
     117  columns: 
     118    name: string 
     119  options: 
     120    type: INNODB 
     121</code> 
     122 
     123次の例ではコレート(照合順序)と文字セットのオプションを設定します: 
    95124 
    96125<code type="php"> 
     
    107136</code> 
    108137 
     138<code type="yaml"> 
     139--- 
     140MyCustomOptionRecord: 
     141  columns: 
     142    name: string 
     143  options: 
     144    collate: utf8_unicode_ci 
     145    charset: utf8 
     146</code> 
     147 
     148一部のデータベース(Firebird, MySql, PostgreSQLなど)では文字セットオプションを設定するだけではDoctrine 
     149が正しいデータを返さないことがあります。これらのデータベースではデータベース接続の際にsetCahtset関数を使うことをお勧めします。 
     150 
     151<code type="php"> 
     152Doctrine_Manager::connection($name)->setCharset("utf8"); 
     153</code> 
     154 
    109155Doctrineは特定のモデルに対して外部キーを停止する能力を提供します。 
    110156 
     
    122168 
    123169++ カラム 
     170 
    124171+++ カラムの命名 
     172 
    125173データベースの互換性に関する一つの問題は多くのデータベースが返されたクエリの結果セットの振る舞いに関して多くのデータベースが異なることです。MySQLはフィールド名を変更しないままにします、このことは、"SELECT myField FROM ..."形式のクエリを発行する場合、結果セットは'myField'フィールドを含むことを意味します。 
    126174