* DBICスキーマクラスの作成 [#d9607ac9]

** ヘルパースクリプトを使う [#i906b2a9]
 script/myapp_create.pl model MyModel DBIC::Schema MySchema create=static 'dbi:Pg:dbname=test_db;host=192.168.0.200' db_user db_passwd
上記のコマンドを実行すると、内部では[[DBIx::Class::Schema::Loader>http://search.cpan.org/perldoc?DBIx::Class::Schema::Loader]]を使って、以下のようなモデルクラス・スキーマクラス・テーブルクラスが作成される。

- lib/MyApp/Model/MyModel.pm
- lib/MySchema.pm
- lib/MySchema/Result/TableA.pm
- lib/MySchema/Result/TableB.pm
- lib/MySchema/Result/TableC.pm

*** 注意 [#ld8f75c7]
MyModel.pmにはDBユーザ名とパスワードがハードコーディングされているので、必要に応じて書き換える。例えば以下のように。
 connect_info => [
     MyApp->config->{dsn},
     MyApp->config->{db_user},
     MyApp->config->{db_password},
 ]

*** 参考 [#m70ecb24]
http://search.cpan.org/perldoc?Catalyst::Helper::Model::DBIC::Schema
- http://search.cpan.org/perldoc?Catalyst::Helper::Model::DBIC::Schema
- コマンドオプションの詳細はhttp://search.cpan.org/perldoc?DBIx::Class::Schema::Loader::Base

** モデルクラスはコントローラ等にて以下のようにして利用できる [#zff854f2]
 sub index : Local {
     my ( $self, $c, $id ) = @_;
     my $row = $c->model('MyModel::TableA')->find($id);
 }

** ヘルパースクリプトを使わないなら [#s0b9a5f2]
DBIx::Class::Schema::Loaderを使うか、完全に手で書く。詳しくは、[[Perl-DBIC/基本/Schemaクラスの作成]] を参照のこと。
DBIx::Class::Schema::Loaderを使うなら、以下のようなスクリプトをscript以下に置いて、実行する。

 #!/usr/local/bin/perl
 
 use DBIx::Class::Schema::Loader qw/make_schema_at/; 
 
 make_schema_at(
    'MyApp::MySchema::Result',
    {
        dump_directory => './lib',
        moniker_map    => sub {
            my $table = shift;
            join '', map ucfirst, split /[\W]+/, lc $table;
        },
    },
    [ 'dbi:Pg:dbname=test_db;host=192.168.0.200', 'db_user', 'db_passwd' ]
 );

** 参考 [#jbf980fb]
- http://search.cpan.org/perldoc?Catalyst::Manual::Intro
- http://search.cpan.org/perldoc?myapp_create.pl

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS