あたらしものずきっ!

試してみたものとか、遊んでみたものを色々記してみます。

modelを追加してみる

modelを追加してみた。作成に当たってまとまってるエントリが見つからないので、どうしようか迷ってたけど、とりあえずCatalyst::Helper::Model::DBIC::Schemaを参照してみた。

%perl script/itscontact_create.pl model AppNames DBIC::Schema AppNames::DBIC::Schema create=static dbi:SQLite:db/appinfo.db

構成は

%perldoc Catalyst::Helper::Model::DBIC::Schema

で大体判る。

MVCそれぞれを追加したので、Modelの追加前のController呼び出し、追加後のController呼び出しを順に行おうとしたところ、Controllerに追加したアクションが全く呼び出されなくなってるのに気がついた。全部「Page not found」で返される。ディレクトリルートにアクセスするとCatalyst作成直後のページが開いた。

ControllerとViewを追加した時点では動いてたので、おそらくModelの時点で動作がおかしくなったのだと思われる。どうしたものか。

ひとまず最初から作り直すことにする…。

作り直した結果

Controller、View、Modelの順に且つ必要な処理のみをこなした結果、正常に表示された。何が原因だったのかはわからずじまい。

DBIC::Schema周りを探すのが少々難儀しそうな予感。とりあえずできたのは

key | name
1 | hoge

というテーブルがあったとして、次のような操作を行い、

my $result = $c->model('AppNames::Appinfo')->find({ key => 1 })->name;
# $result == hoge
hoge

と出力すること。model()でテーブル指定等行っているため、あとはfindにて検索条件を指定して該当値をはじきだす。

my $result = $c->model('モデル名')->find({ key => hoge })->name;


モダンperl入門catalyst部分を読み直しておくことにする。