Kato Atsushi
ktats****@users*****
2007年 7月 14日 (土) 08:59:07 JST
Index: docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Cookbook.pod diff -u docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Cookbook.pod:1.5 docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Cookbook.pod:1.6 --- docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Cookbook.pod:1.5 Tue Jun 26 09:50:42 2007 +++ docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Cookbook.pod Sat Jul 14 08:59:07 2007 @@ -40,7 +40,7 @@ In either of the above cases, you can return a L<Data::Page> object for the resultset (suitable for use in e.g. a template) using the C<pager> method: -上のケースでも、結果セットに、L<Data::Page>オブジェクト(テンプレートに使うのに適した) +上のケースのいずれでも、結果セットに、L<Data::Page>オブジェクト(テンプレートに使うのに適した) を得ることができます。C<pager>メソッドを使って: return $rs->pager(); @@ -151,8 +151,8 @@ C< as >属性は、SQLのシンタックスC< SELECT foo AS bar>とまったく関係ないことに 気をつけてください(L<DBIx::Class::ResultSet/ATTRIBUTES>のドキュメントを見てください)。 ベースクラスにカラムとしてエイリアスがある(すなわち、C<add_columns>で追加されている)のなら、 -普通にそれにアクセスできます。C<Artist>クラスには、C<name>カラムがあるので、 -C<name>アクセサを使えます: +普通にそれにアクセスできます。この例で言えば、C<Artist>クラスには、 +C<name>カラムがあるので、C<name>アクセサを使えます: my $artist = $rs->first(); my $name = $artist->name(); @@ -231,7 +231,7 @@ 上記の(C< join >、 C< select >、 C< as >、 C< group_by>)属性の使い方がわからなければ、 L<DBIx::Class::ResultSet/ATTRIBUTES>ドキュメントをみてください。 -=head3 先に定義された検索 +=head3 定義済み検索 You can write your own L<DBIx::Class::ResultSet> class by inheriting from it and define often used searches as methods: @@ -265,7 +265,7 @@ Then call your new method in your code: -それから、コードの中で、新しい壊疽っ度を呼びます: +それから、コードの中で、新しいメソッドを呼びます: my $ordered_cds = $schema->resultset('CD')->search_cds_ordered(); @@ -323,7 +323,7 @@ it in your C<order_by> attribute: 必要なら、C<order_by>属性にそれを含めて、関連するテーブルのいずれかのカラムで -ソート摺ることも出来ます。 +ソートすることも出来ます。 my $rs = $schema->resultset('CD')->search( { @@ -421,7 +421,7 @@ Note that as of L<DBIx::Class> 0.05999_01, C<prefetch> I<can> be used with C<has_many> relationships. -L<DBIx::Class> 0.05999_01の辞典で、 C<has_many>のリレーションシップで、 +L<DBIx::Class> 0.05999_01の時点で、 C<has_many>のリレーションシップで、 C<prefetch>をI<使え>たのに注意してください。 Also note that C<prefetch> should only be used when you know you will @@ -439,7 +439,7 @@ we want to find all C<Artist> objects who have C<CD>s whose C<LinerNotes> contain a specific string: -ひとつ以上の深いリレーションシップでjoinしたいときもあるでしょう。 +2つ以上の深いリレーションシップでjoinしたいときもあるでしょう。 この例では、C<LinerNotes>に特定の文字が含まれるC<CD>を持っている、 C<Artist>オブジェクトを探したいとします: @@ -501,8 +501,8 @@ From 0.04999_05 onwards, C<prefetch> can be nested more than one relationship deep using the same syntax as a multi-step join: -0.04999_05以前から、C<prefetch>は、マルチステップの結合と同じシンタックスで、 -一つ以上の深いリレーションシップでネストできました: +0.04999_05から、C<prefetch>は、マルチステップの結合と同じシンタックスで、 +2つ以上の深いリレーションシップでネストできました: my $rs = $schema->resultset('Tag')->search( {}, @@ -580,7 +580,7 @@ instead: C<ResultSetColumn>は少しだけビルトインの関数があります。 -これにないものが必要なら、C<func>メソッドを変わりに使うことができます: +これにないものが必要なら、C<func>メソッドを代わりに使うことができます: my $avg = $cost->func('AVERAGE'); @@ -637,7 +637,7 @@ L<DBIx::Class::Storage::DBI> and L<DBIx::Class::Schema>. Here is an example of the recommended way to use it: -0.04001以前に、 L<DBIx::Class::Storage::DBI>とL<DBIx::Class::Schema>に、改良された +0.04001以降に、 L<DBIx::Class::Storage::DBI>とL<DBIx::Class::Schema>に、改良された トランザクションサポートがあります。これを使う推奨される方法の一例です: my $genus = $schema->resultset('Genus')->find(12); @@ -677,7 +677,7 @@ ネストされたトランザクションは期待どおりに動きます。 一番外側のトランザクションだけが実際に$dbhにコミットを発行します。 どのレベルのどのトランザクションでも、ロールバックしたら、 -全てのネストされたトランザクションが失敗します。 +ネストされたトランザクション全てが失敗します。 セーブポイントと、本当にネストされたトランザクション (それをサポートしているデータベース用に)は、将来、うまくいけば、追加されるでしょう。 @@ -840,7 +840,7 @@ schema to MySQL's dialect of SQL: MySQLデータベースを既存のL<DBIx::Class>スキーマから作ります。 -スキーマをMySQLのSQL放言に変換します: +スキーマをMySQLのSQL方言に変換します: sqlt --from SQL::Translator::Parser::DBIx::Class --to MySQL @@ -852,7 +852,7 @@ mysql -h "host" -D "database" -u "user" -p < Schema1.sql -=head2 クラスベースからスキーマペースのセットアップへの簡単な移行 +=head2 クラスベースからスキーマベースセットアップへの簡単な移行 You want to start using the schema-based approach to L<DBIx::Class> (see L<SchemaIntro.pod>), but have an established class-based setup with lots @@ -906,7 +906,7 @@ deploy versioned schemas to your customers. The basic process is as follows: 下記の例では、DBIx::Classを使って、顧客向けにバージョン付きのスキーマをどうやって -デプロイするかをお見せします。 +デプロイするかをお見せします。基本的なプロセスは下記のようになります: =over 4 @@ -986,7 +986,7 @@ Require customer to apply manually using their RDBMS. -顧客にRDBMSを手で変更するように求める +顧客にRDBMSを使って、手で適用するように求める =item 2. @@ -995,6 +995,7 @@ アプリケーションと一緒に、データベースのダンプ、スキーマのアップデート、 インストールの全パートのテストを作るように、パッケージする + =back =head3 機能性を変更するために、スキーマを変更する @@ -1036,7 +1037,7 @@ 時には、SQL::Abstract::Limit はデータベースハンドルで見ていることで、 リモートのSQLサーバの方言を決めれられない場合があります。 -これは、DBD::JDBCを使っているときの、よく知られた問題です。。 +これは、DBD::JDBCを使っているときの、よく知られた問題です。 DBD-driver は Java-driver が利用できることを知っているだけで、 どのJDBCドライバをJavaコンポーネントがロードしているかを知らないからです。 具体的に、Microsoft SQL-server のlimitの方言をセットします @@ -1055,8 +1056,8 @@ If the database contains column names with spaces and/or reserved words, they need to be quoted in the SQL queries. This is done using: -データベースにスペースおよび/または予約後のついたカラム名がある場合、 -SQLクエリないで、クォートされる必要があります。次のようにします: +データベースにスペースおよび/または予約語のついたカラム名がある場合、 +SQLクエリ内で、クォートされる必要があります。次のようにします: __PACKAGE__->storage->sql_maker->quote_char([ qw/[ ]/] ); __PACKAGE__->storage->sql_maker->name_sep('.'); @@ -1086,8 +1087,8 @@ L<DBIx::Class>はL<Class::C3>パッケージを使っています。L<Class::C3>はメソッドコールを 再分岐させるために使われています。メソッドをオーバーロードするために、 C<next::method>の呼び出しを使わなければいけません。 -L<DBIx::Class>とL<Class::C3>を使ったより詳しい情報は、L<DBIx::Class::Manual::Component> -を見てください。 +L<DBIx::Class>とL<Class::C3>の利用に関する詳しい情報は、 +L<DBIx::Class::Manual::Component>を見てください。 =head3 他が変更されたらいつでもあるフィールドを変更する @@ -1098,7 +1099,7 @@ 例えば、3つのカラムがあったとします。C<id>、C<number>、C<squared>。 C<number>に変更を加え、C<squared>は自動的に、C<number>の二乗の値を -セットしたいとします。C<store_coolumn>をオーバーロードすることで、 +セットしたいとします。C<store_column>をオーバーロードすることで、 これができます: sub store_column { @@ -1122,9 +1123,8 @@ You can accomplish this by overriding C<insert> on your objects: 多くのC<CD>を持ったC<Artist>クラスがあるとします。 -さらに、C<Artist>オブジェクトをインサートするときは、いつでも、 -C<CD>オブジェクトを作りたければ、オブジェクトのC<insert>を -オーバロードすればできます: +さらに、C<Artist>オブジェクトをインサートする度毎にC<CD>オブジェクトを +作りたいとします。これは、オブジェクトのC<insert>をオーバロードすればできます: sub insert { my ( $self, @args ) = @_; @@ -1137,7 +1137,7 @@ values in C<CD> based on the data in the C<Artist> object you pass in. C<fill_from_artist>はC<CD>で指定しているメソッドで、 -渡したC<Artist>オブジェクトのデータに基づいた値をセットします。 +渡したC<Artist>オブジェクトのデータに基づいた値をCDにセットします。 =head2 Data::Dumperを使って、DBIx::Classをデバッグする @@ -1158,9 +1158,10 @@ be dumped to the screen. Since usually one is only interested in a few column values of the object, this is not very helpful. -複数ページにわたり、CDオブジェクトのスキーマと結果のソースから価値のあるデータが -スクリーンにダンプされます。ですが、普通はオブジェクトの数カラムの値の1つのみに -興味があるので、これでは、あまり便利ではありません。 +複数ページにわたり、CDオブジェクトのスキーマと結果のソースが、複数 +ページにわたるデータとなってスクリーンにダンプされます。ですが、 +普通はオブジェクトの数カラムの値の1つのみに興味があるので、これでは、 +あまり便利ではありません。 Luckily, it is possible to modify the data before L<Data::Dumper> outputs it. Simply define a hook that L<Data::Dumper> will call on the object before @@ -1285,8 +1286,8 @@ You could then create average, high and low execution times for an SQL statement and dig down to see if certain parameters cause aberrant behavior. -それから、平均やSQLステートメントのあらゆる時間を取れますし、あるパラメータが -異常な振る舞いを引き起こしていれば、掘り下げることも出来まるでしょう。 +それから、SQLステートメントの平均、最長、最短実行時間を取れますし、ある +パラメータが異常な振る舞いを引き起こしていれば、掘り下げることも出来るでしょう。 =head2 最後にデータベースにインサートしたプライマリキーの値を取りたい @@ -1309,7 +1310,7 @@ =head2 DBIx::Classのプロキシクラスを動的にサブクラス化する (AKA multi-class object inflation from one table) -(AKA 1つのテーブルからマルチクラスのオブジェクトに膨らませる) +(AKA 1つのテーブルからマルチクラスのオブジェクトに展開する) L<DBIx::Class> classes are proxy classes, therefore some different techniques need to be employed for more than basic subclassing. In @@ -1338,7 +1339,7 @@ below: ユーザーのプロキシクラス内でC<inflate_result>メソッドをオーバーライドすることで、 -望んでいる効果が得られます。このメソッドは、ストレージからの結果が膨らむときに、 +望んでいる効果が得られます。このメソッドは、ストレージから結果が展開されるときに、 L<DBIx::Class::ResultSet>によって呼ばれます。 返されたオブジェクトを掴んだら、探している値を調べ、管理者オブジェクトであれば、 それをblessします。下の例を見てください: @@ -1489,7 +1490,7 @@ } } -=head2 find_or_create が見付けたのか、列を作ったのかわかりますか? +=head2 find_or_create が見付けたのか、列を作ったのかを知りたい? Just use C<find_or_new> instead, then check C<in_storage>: @@ -1566,7 +1567,7 @@ http://perldocjp.sourceforge.jp/ http://sourceforge.jp/projects/perldocjp/ - http://www.freeml.com/ctrl/html/MLInfoForm/perld****@freem***** + http://www.freeml.com/perldocjp/ http://www.perldoc.jp =cut