DBICスキーマクラスの作成

ヘルパースクリプトを使う

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を使って、以下のようなモデルクラス・スキーマクラス・テーブルクラスが作成される。

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

注意

MyModel.pmにはDBユーザ名とパスワードがハードコーディングされているので、必要に応じて書き換える。例えば以下のように。

connect_info => [
    MyApp->config->{dsn},
    MyApp->config->{db_user},
    MyApp->config->{db_password},
]

参考

モデルクラスはコントローラ等にて以下のようにして利用できる

sub index : Local {
    my ( $self, $c, $id ) = @_;
    my $row = $c->model('MyModel::TableA')->find($id);
}

ヘルパースクリプトを使わないなら

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' ]
);

参考


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

Last-modified: 2009-04-30 (木) 06:04:06 (3430d)