Perlプログラムに関する各種メモ書き

10分(?)で出来るDBIx::Class の導入

■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


No.491
03/31 15:29

edit