■1. DBIx::Classのインストール
例によってCPANコマンドでインストールします。
unixのシェルから
perl -MCPAN -e shell cpan > install DBIx::Class cpan > install DBIx::Class::Schema::Loader
でOK。
(何か入力が促されたらそのままEnterを押せばいいです)
■ 2.テーブルスキーマの自動生成
unixのシェルでプログラムを作成するディレクトリに移ってから
perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at "Hoge::Schema", {relationships => 1, debug => 1}, ["dbi:mysql:hoge","user","password"]'
でディレクトリ「lib」が自動生成され、そのなかにテーブルスキーマのクラスファイルが
自動生成されます。
上記例は DBタイプ:mysql DB名:hoge DBユーザー名:user DBパスワード:password 生成されるクラス名:Hoge です。(適宜書き換えること)
参考:http://d.hatena.ne.jp/amachang/20061010/1160495437
■ 3.リレーションの設定
例として 【1対多】のリレーションを設定してみます。
「./lib/Hogehoge/Schema/」の中の【テーブル名.pm】をそれぞれ開いて下記の通り追加します。
◆1 【1対多】の「1」の方のテーブルには
__PACKAGE__->has_many( class => 'Hogehoge::Schema::Test2Dt', 'data_id' );
◆2 【1対多】の「多」の方のテーブルには
__PACKAGE__->belongs_to( class => 'Rss::Schema::Test1Dt' , { 'data_id' => 'data_id' } );
と記述します。
■ 4. 実行テスト用Perlファイルの作成
test.pl を下記のように作成します。
#!/usr/local/bin/perl use strict; use Data::Dumper; use warnings; use lib qw(./lib); use Hoge::Schema; # DB接続 my $schema = Hoge::Schema->connect("dbi:mysql:hoge", "user", "password"); # utf8 対応 $schema->storage->dbh->do("SET names utf8"); # 実際に実行するSQL文を STD_ERR に表示させるようにする。 $ENV{DBIC_TRACE} = 1; my $rs = $schema->resultset('Test1Dt')->search; while (my $row = $rs->next) { print Dumper($row); print Dumper($row->class); }
実行してみます
perl test.pl
参考:http://blog.mag2.com/m/log/0000222814/108463283.html
参考:http://www.ornithopter.jp/archives/2006/10/dbixclassdbic_d.html