Kato Atsushi
ktats****@users*****
2007年 7月 14日 (土) 13:07:31 JST
Index: docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Intro.pod diff -u docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Intro.pod:1.1 docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Intro.pod:1.2 --- docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Intro.pod:1.1 Sat Jul 14 12:10:13 2007 +++ docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/Intro.pod Sat Jul 14 13:07:31 2007 @@ -311,24 +311,36 @@ L<DBIx::Class::Schema::Loader>は、たくさんの他のオプションがあります。 詳しくは、ドキュメントを見てください。 -=head2 Connecting +=head2 接続 To connect to your Schema, you also need to provide the connection details. The arguments are the same as you would use for L<DBI/connect>: +スキーマに接続するためには、接続のための詳細情報を提供しなければいけません。 +引数は、L<DBI/connect>と同じです: + my $schema = My::Schema->connect('dbi:SQLite:/home/me/myapp/my.db'); You can create as many different schema instances as you need. So if you have a second database you want to access: +必要に応じて、多くの違ったスキーマインスタンスを作ることが出来ます。 +2つ目のデータベースがあり、アクセスしたいなら: + my $other_schema = My::Schema->connect( $dsn, $user, $password, $attrs ); Note that L<DBIx::Class::Schema> does not cache connections for you. If you use multiple connections, you need to do this manually. +L<DBIx::Class::Schema>は接続をキャッシュしないことに注意してください。 +複数のコネクションを使うなら、手でしなければなりません。 + To execute some sql statements on every connect you can add them as an option in a special fifth argument to connect, like so: +接続毎に、いくつかのsql文実行したいなら、connectの特別な5版目の引数に +オプションとしてとして追加できます。次のようにします: + my $another_schema = My::Schema->connect( $dsn, $user, @@ -340,49 +352,79 @@ For more information about this and other special C<connect()>-time options, see L<DBIx::Class::Schema::Storage::DBI/connect_info>. -=head2 Basic usage +これについてより詳しい情報と、他の特別なC<connect()>-時のオプションについては、 +L<DBIx::Class::Schema::Storage::DBI/connect_info>を見てください。 + +=head2 基本の使い方 Once you've defined the basic classes, either manually or using L<DBIx::Class::Schema::Loader>, you can start interacting with your database. +基本のクラスを定義したら、手でも、 L<DBIx::Class::Schema::Loader>でも、 +データベースへのinteractingを始められます。 + To access your database using your $schema object, you can fetch a L<DBIx::Class::Manual::Glossary/"ResultSet"> representing each of your tables by calling the ->resultset method. +$schemaオブジェクトでデータベースにアクセスするのに、 +->resultsetメソッドを呼び出すことで、それぞれのテーブルを表す、 +L<DBIx::Class::Manual::Glossary/"ResultSet">を取ります。 + The simplest way to get a record is by primary key: +レコードを取るもっとも簡単な方法は、プライマリーキーで取る方法です: + my $album = $schema->resultset('Album')->find(14); This will run a C<SELECT> with C<albumid = 14> in the C<WHERE> clause, and return an instance of C<My::Schema::Album> that represents this row. Once you have that row, you can access and update columns: +C<WHERE>節にC<albumid=4>で、C<SELECT>が実行され、その列を表す +C<My::Schema::Album>のインスタンスを返します。 +その列があれば、カラムにアクセスでき、アップデートできます。 + $album->title('Physical Graffiti'); my $title = $album->title; # $title holds 'Physical Graffiti' If you prefer, you can use the C<set_column> and C<get_column> accessors instead: +お好みなら、C<set_column>とC<get_column>のアクセサを代わりに使えます: + $album->set_column('title', 'Presence'); $title = $album->get_column('title'); Just like with L<Class::DBI>, you call C<update> to commit your changes to the database: +ちょうどL<Class::DBI>と同じように、C<update>を読んで、 +変更をデータベースにコミットできます: + $album->update; If needed, you can throw away your local changes like this: +必要なら、次のようにして、ローカルの変更を捨てることもできます: + $album->discard_changes if $album->is_changed; As you can see, C<is_changed> allows you to check if there are local changes to your object. -=head2 Adding and removing rows +御覧との通り、C<is_changed>でオブジェクトにローカルの変更が加えられたか +どうかをチェックできます。 + +=head2 列の追加及び削除 To create a new record in the database, you can use the C<create> method. It returns an instance of C<My::Schema::Album> that can be used to access the data in the new record: +データベースに新しいレコードを作るためには、C<create>メソッドを使います。 +C<My::Schema::Album>のインスタンスを返し、新しいレコードのデータにアクセスするのに +使えます: + my $new_album = $schema->resultset('Album')->create({ title => 'Wish You Were Here', artist => 'Pink Floyd' @@ -390,25 +432,35 @@ Now you can add data to the new record: +さぁ、新しいレコードにデータを追加できます: + $new_album->label('Capitol'); $new_album->year('1975'); $new_album->update; Likewise, you can remove it from the database like this: +同様に、次のようにして、データベースからそれを削除できます: + $new_album->delete; You can also remove records without retrieving them first, by calling delete directly on a ResultSet object. +最初にレコードを取ってこずに削除することもできます。 +ResultSetオブジェクトで直接にdeleteを呼びます。 + # Delete all of Falco's albums $schema->resultset('Album')->search({ artist => 'Falco' })->delete; -=head2 Finding your objects +=head2 オブジェクトを探す L<DBIx::Class> provides a few different ways to retrieve data from your database. Here's one example: +L<DBIx::Class>は、データベースからデータを取得するのに、いくつかの +違った方法を提供しています。1つの例として: + # Find all of Santana's albums my $rs = $schema->resultset('Album')->search({ artist => 'Santana' }); @@ -416,11 +468,16 @@ L<DBIx::Class::ResultSet> object. It can be used to peek at the first album returned by the database: +スカラコンテキストでは、C<search>は、L<DBIx::Class::ResultSet>オブジェクト +を返します。データベースから返された最初のアルバムを覗くのに使えます: + my $album = $rs->first; print $album->title; You can loop over the albums and update each one: +アルバムをループして、それぞれをアップデートできます: + while (my $album = $rs->next) { print $album->artist . ' - ' . $album->title; $album->year(2001); @@ -429,14 +486,21 @@ Or, you can update them all at once: +もしくは、一度に全てをアップデートできます: + $rs->update({ year => 2001 }); For more information on what you can do with a L<DBIx::Class::ResultSet>, see L<DBIx::Class::ResultSet/METHODS>. +何が出来るかについてのより詳しい情報は、 +L<DBIx::Class::ResultSet>の L<DBIx::Class::ResultSet/METHODS>を見てください。 + In list context, the C<search> method returns all of the matching rows: +リストコンテキストでは、C<search>メソッドはマッチした列全てを返します: + # Fetch immediately all of Carlos Santana's albums my @albums = $schema->resultset('Album')->search( { artist => 'Carlos Santana' } @@ -447,11 +511,15 @@ We also provide a handy shortcut for doing a C<LIKE> search: +C<LIKE>検索のための、手軽なショートカットもあります: + # Find albums whose artist starts with 'Jimi' my $rs = $schema->resultset('Album')->search_like({ artist => 'Jimi%' }); Or you can provide your own C<WHERE> clause, like: +もしくは、次のように、自分自身のC<WHERE>節を渡せます: + # Find Peter Frampton albums from the year 1986 my $where = 'artist = ? AND year = ?'; my @bind = ( 'Peter Frampton', 1986 ); @@ -460,6 +528,9 @@ The preferred way to generate complex queries is to provide a L<SQL::Abstract> construct to C<search>: +複雑なクエリを生成する好ましい方法は、L<SQL::Abstract>の構造を +C<search>に渡すことです: + my $rs = $schema->resultset('Album')->search({ artist => { '!=', 'Janis Joplin' }, year => { '<' => 1980 }, @@ -468,6 +539,8 @@ This results in something like the following C<WHERE> clause: +結果は、下記のC<WHERE>節と同様です: + WHERE artist != 'Janis Joplin' AND year < 1980 AND albumid IN (1, 14, 15, 65, 43) @@ -475,9 +548,13 @@ For more examples of complex queries, see L<DBIx::Class::Manual::Cookbook>. +複雑なクエリの他の例はL<DBIx::Class::Manual::Cookbook>にあります。 + The search can also be modified by passing another hash with attributes: +属性に他のハッシュを渡すことで、search を修正できます: + my @albums = My::Schema->resultset('Album')->search( { artist => 'Bob Marley' }, { rows => 2, order_by => 'year DESC' } @@ -485,9 +562,13 @@ C<@albums> then holds the two most recent Bob Marley albums. +C<@albumns> には、最近のBob Marleyのアルバム2つがあります。 + For a complete overview of the available attributes, see L<DBIx::Class::ResultSet/ATTRIBUTES>. +使える属性の完全な概観は、L<DBIx::Class::ResultSet/ATTRIBUTES>を見てください + =head1 SEE ALSO =over 4