良くあるDBICのサンプルではDBIx::Class::Schema::load_classes()を使ってクラスのロードを行っています。 CD.pm package CD; use strict; use warnings; use base 'DBIx::Class::Schema'; __PACKAGE__->load_classes; 1; load_classes()はクラスを指定しないと CD Album Track という構成において自動的にクラスをロードすることができます。 ここでResultSetの拡張をしたいと考えます。例えば CD/ResultSet/Album.pm package CD::ResultSet::Album; use strict; use warnings; use base 'DBIx::Class::ResultSet'; sub search
abraxxa: Alexander Hartmaier acca: Alexander Kuznetsov acme: Leon Brocard aherzog: Adam Herzog Alexander Keusch alexrj: Alessandro Ranellucci alnewkirk: Al Newkirk Altreus: Alastair McGowan-Douglas amiri: Amiri Barksdale amoore: Andrew Moore Andrew Mehta andrewalker: Andre Walker andyg: Andy Grundman ank: Andres Kievsky arc: Aaron Crane arcanez: Justin Hunter ash: Ash Berlin bert: Norbert Csongrád
公開: 2009年3月5日0時25分頃 DBIx::Class::ResultSetでsearch()を使うとき、第二引数に{rows=>10}などを渡すと簡単にLIMITが指定できます。が、同じ事をsearch_literal()でやろうとすると、可変個のバインド変数を受け取るためかうまく行かず……。DBIx::Class::ResultSetの説明 (search.cpan.org)を読むと、search()の引数が「$cond, \%attrs?」なのに対してsearch_literal()の引数は「$sql_fragment, @bind_values」となっていて、そもそも\%attrsを渡せるようにはなっていないようですね。 ……で、いろいろ調べていたら、こんな書き込みを発見しました。 $rs->search_literal('id = ?) FOR UPDATE; --',
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧
abraxxa: Alexander Hartmaier acca: Alexander Kuznetsov acme: Leon Brocard aherzog: Adam Herzog Alexander Keusch alexrj: Alessandro Ranellucci alnewkirk: Al Newkirk Altreus: Alastair McGowan-Douglas amiri: Amiri Barksdale amoore: Andrew Moore Andrew Mehta andrewalker: Andre Walker andyg: Andy Grundman ank: Andres Kievsky arc: Aaron Crane arcanez: Justin Hunter ash: Ash Berlin bert: Norbert Csongrád
DBIx::Class::Schemaで、自動的にカラムの設定を行うハック package MySchema; use strict; use base qw(DBIx::Class::Schema::Loader); __PACKAGE__->loader_options(...); sub connection { my $class = shift; my $schema = $class->SUPER::connection(@_); my $classes = $schema->loader->classes; while (my($table, $schema_class) = each %$classes) { foreach my $column ($schema_class->columns) { # do something with $column }
取得したデータを参照するときに変換しておきたい場合はinflate_columnを使います。 例えばcreated_onカラムをDateTimeオブジェクトとして扱いたい場合、 package Schema::Foo; __PACKAGE__->inflate_column( 'created_on', { inflate => sub { DateTime::Format::xxx->parse_datetime(shift); }, } ); なんて設定をしておくと、$row->created_on はDateTimeオブジェクトになるわけです。 この時 $row->get_column('created_on') とすることで生の文字列を得ることもできます。 また、inflate_columnを使う代わりに get_column を上書きしてしまうこともできます。 package S
ブログが続かないわけ | DBIC で+select と+as : ああ、今頃気づくなんて... でも、どうにも不便だと思ってDBIx::Class::ResultsetのPODを読んでいると、+select と+as なるものがあるじゃないですか。これだと、まさに先ほど直感的に書いたような方法で書けるのです。 $c->model('DBIC::TranDiary')->search( $query_ref, { '+select' => [ { date_format => 'me.create_date,\'%Y/%m/%d\'' }, ], '+as' => [ qw/create_date/ ] } ); これって常識なんだろな。だってPODに書いてあるんだもん。 ちょっとへこみました。 +select と +as なんて、あるんだなー便利だなーと思いつつ、それは、inflate_
と言う訳で自分なりに色々調べてみた。 テスト用データベース定義 CREATE TABLE `User` ( `user_id` bigint(20) NOT NULL auto_increment, `name` varchar(255) character set latin1 default NULL, `created_on` datetime default NULL, `updated_on` datetime default NULL, PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `Book` ( `book_id` bigint(20) NOT NULL auto_increment, `name` varchar(255) character set latin1 de
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
NAME Catalyst::Plugin::Authentication::Store::DBIC - **DEPRECATED** Authentication and authorization against a DBIx::Class or Class::DBI model. DEPRECATED This store has been deprecated in favour of Catalyst::Authentication::Store::DBIx::Class. Please do not use this plugin for new development. SYNOPSIS use Catalyst qw/ Authentication Authentication::Store::DBIC Authentication::Credential::Passwor
package My::DB; use strict; use warnings; use base qw/DBIx::Class::Schema/; __PACKAGE__->load_classes(qw/Memo/); 1; package My::DB::Memo; use strict; use warnings; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/PK::Auto::MySQL Core/); __PACKAGE__->table('memo'); __PACKAGE__->add_columns(qw/id title body mtime/); __PACKAGE__->set_primary_key('id'); 1; load_components以外はClass::DBIにも同じもの/よ
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
DBIx::Class::Schema::Loaderを入れれば、その上の3つもインストールされる。DBDはどれを使うか聞かれるがデフォルトは「インストールしない」なのでリターン連打しないように注意して。ほかにも物凄い大量の依存パッケージをインストールする。 CatalystのDBIサポート関連クラスをCPANでインストール 適当なテーブルを作る。 CREATE TABLE books ( id INTEGER NOT NULL AUTO_INCREMENT, isbn VARCHAR(13), title VARCHAR(255) NOT NULL, author VARCHAR(255), summary TEXT, PRIMARY KEY(id) ) character SET utf8 type=innoDB; テスト用に適当なデータもブッ込んでおく insert into boo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
{{#tags}}- {{label}}
{{/tags}}