Changeset 4588
- Timestamp:
- 06/28/08 14:51:11 (12 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/0.11/manual/docs/ja/basic-schema-mapping.txt
r4531 r4588 1 ++ 序文 1 ++ はじめに 2 2 3 この章と節ではDoctrineで基本的なスキーママッピングを行う方法を説明します。この章の概念に慣れると次の方法がわかります: 3 4 … … 9 10 Doctrineの範囲内ですべてのカラムマッピングはDoctrine_RecordのhasColumn()メソッドを通して行われます。 hasColumnは4つの引数を取ります: 10 11 11 # **カラム名** カラム名とオプションのエイリアスを指定する文字列です。これはすべてのカラムに対して必要です。から無名に対してエイリアスを指定したい場合、'[columnName] as [columnAlias]'フォーマットを使用する必要があります。 12 # **カラム名** カラム名とオプションのエイリアスを指定する文字列です。これはすべてのカラムに対して必要です。カラム名に対してエイリアスを指定したい場合、'[columnName] as [columnAlias]'のフォーマットを使います。 13 12 14 # **カラムタイプ** カラムタイプを指定する文字列です。カラムタイプのセクションをご覧下さい。 15 13 16 # **カラムの長さ** カラムの長さを指定する整数です。カラムタイプの中には与えられたポータルタイプだけでなく与えられた長さにも依存するものがあります。例えば、長さ1000を持つ文字列のタイプはmysql上ではネイティブのタイプのTEXTに変換されます。 17 14 18 # **カラムの制約とバリデータ** 与えられたカラムに適用される制約とバリデータを指定する配列です。 15 19 16 バリデータ/カラムの制約とカラム長さフィールドはオプションであることに注意して下さい。長さは長さの引数に対して **null**を使用して省略されることがあります、これによってdoctrineはデフォルトの長さを使用できるようになり、バリデーションもしくはカラム制約に対して4番目の引数が許可されます。20 バリデータ/カラムの制約とカラム長さフィールドはオプションであることに注意して下さい。長さは長さの引数に対して **null** を使用して省略されることがあります、これによってdoctrineはデフォルトの長さを使用できるようになり、バリデーションもしくはカラム制約に対して4番目の引数が許可されます。 17 21 18 22 最初の例に取り組んでみましょう。次の定義は'emails'テーブルを参照するEmailクラスを定義します。Emailクラスは2つのカラムid(一つはオートインクリメントの主キーのカラム)と名前がaddressである文字列カラムを持ちます。 … … 37 41 </code> 38 42 43 YAMLスキーマファイルでモデルを定義した場合は以下の様になります。 44 45 <code type="yaml"> 46 --- 47 Email: 48 tableName: emails 49 columns: 50 address: 51 type: string(200) 52 notblank: true 53 email: true 54 </code> 55 56 39 57 ではこのクラスに対するエクスポートスクリプトを作成してみましょう: 58 40 59 41 60 <code type="php"> … … 54 73 </code> 55 74 56 スクリプトは次のSQLを実行します(ここではデータベースバックエンドとしてMySQLを使用しています): 75 76 このスクリプトは次のSQLを実行します(ここではデータベースバックエンドとしてMySQLを使用しています): 57 77 58 78 <code> 59 CREATE TABLE emails (id INT NOT NULL AUTO_INCREMENT, address VARCHAR(200) NOT NULL) 60 </code> 61 79 CREATE TABLE emails (id BIGINT AUTO_INCREMENT, address VARCHAR(200), PRIMARY KEY(id)) ENGINE = INNODB; 80 </code> 62 81 63 82 ++ テーブルとクラスの命名 83 64 84 Doctrineはレコードクラス名からテーブル名を自動的に作成します。このため、次のルールを使用してレコード名を名付けることが推奨されます: 65 85 … … 67 87 * アンダースコアは許可されます 68 88 * 最初の文字は大文字でなければなりません 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}}. 71 91 72 92 **例:** {{My_PerfectClass}} … … 74 94 異なるネーミングスキーマを使用する場合、{{setTableDefinition()}}メソッドの{{setTableName()}}メソッドを使用してこれをオーバーライドできます。 75 95 76 77 96 ++ テーブルオプション 78 Doctrineは様々なテーブルオプションを提供します。すべてのテーブルオプションは{{Doctrine_Record::option($optionName, $value)}}を通して設定できます。 97 98 Doctrineは様々なテーブルオプションを提供します。すべてのテーブルオプションは {{Doctrine_Record::option($optionName, $value)}} を通して設定できます。 79 99 80 100 例えば、MySQLを使用していてINNODBテーブルを使用したい場合次のように行われます: … … 92 112 </code> 93 113 94 次の例において照合順序と文字セットオプションを設定します: 114 <code type="yaml"> 115 --- 116 MyInnoDbRecord: 117 columns: 118 name: string 119 options: 120 type: INNODB 121 </code> 122 123 次の例ではコレート(照合順序)と文字セットのオプションを設定します: 95 124 96 125 <code type="php"> … … 107 136 </code> 108 137 138 <code type="yaml"> 139 --- 140 MyCustomOptionRecord: 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"> 152 Doctrine_Manager::connection($name)->setCharset("utf8"); 153 </code> 154 109 155 Doctrineは特定のモデルに対して外部キーを停止する能力を提供します。 110 156 … … 122 168 123 169 ++ カラム 170 124 171 +++ カラムの命名 172 125 173 データベースの互換性に関する一つの問題は多くのデータベースが返されたクエリの結果セットの振る舞いに関して多くのデータベースが異なることです。MySQLはフィールド名を変更しないままにします、このことは、"SELECT myField FROM ..."形式のクエリを発行する場合、結果セットは'myField'フィールドを含むことを意味します。 126 174