- 追加された行はこの色です。
- 削除された行はこの色です。
* Schemaクラス - DBIx::Class::Schema::Loader[#r5d1f8a7]
* Schemaクラスファイルの自動生成 [#o5a56f88]
** Schemaクラスファイルの自動生成 [#w1fb1e6b]
** コマンドラインからDBIx::Class::SchemaクラスとDBIx::Classクラスを作る[#p3fc77b4]
MySQLのmydbデータベースに接続して、libディレクトリ以下にMyDB::Schemaという名前空間でSchemaクラスを作成してくれる。
perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib \
-e 'make_schema_at "MyDB::Schema", {relationships => 1, debug => 1}, ["dbi:mysql:mydb","db_user","db_passwd"]'
出来るファイルは以下の通り。
- lib
`-- MyDB
|-- Schema
| |-- TableA.pm # テーブルAのDBIx::Classクラス
| `-- TableB.pm # テーブルBのDBIx::Classクラス
`-- Schema.pm # DBIx::Class::Schemaクラス
** DBIx::Class::Schema::Loaderを継承して [#gcef247b]
全テーブル分のSchemaクラス。
テーブルごとのDBIx::Classクラスは作らず、Schema::Loaderクラス1つで代用する。
package MyDB;
use base qw/DBIx::Class::Schema::Loader/;
__PACKAGE__->loader_options();
1;
そのShecmaクラスを利用するスクリプト。
そのSchema::Loaderクラスを利用するスクリプト。
use MyDB;
my $db = DB->connect('dbi:Pg:dbname=mydb','dbuser','dbpasswd');
my $db = MyDB->connect('dbi:Pg:dbname=mydb','dbuser','dbpasswd');
my $rs = $db->resultset('Users');
my @rows = $rs->search;
foreach (@rows) {
print $_->id,$_->name,"\n";
}
** 参考 [#ef5957c4]
http://search.cpan.org/~blblack/DBIx-Class-Schema-Loader-0.04002/lib/DBIx/Class/Schema/Loader.pm