実は最近ちょっとDBIx::Classぐりぐりしてたんですけど、かなりいい感じです。 次からプロジェクト組むときは Class::DBI じゃなくて DBIx::Class にしてみようかなってくらい。 てわけでちょっとずつ比較。チラシ裏モードで書きなぐり。 まず Class::DBI でのページング処理の問題について。 Class::DBI では Class::DBI::Pager が有名ですが、これは検索条件に該当するものを 全部 fetch してきた... [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|
DBIx::Classでの集約関数(sum,avg,max,min,count,...)の使い方 searchの第二引数のハッシュリファレンスに、selectとasを指定する。 selectには集約関数とその引数(普通の列が欲しければその名前も)、asにはそれにつける名前を指定。結果はget_column('名前')で得る。 (Schemaのadd_columnsで指定されてる名前ならget_columnは必要ない。) $resultset->search({ #where句の条件 }, { select => [ "列名", # nameと... [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|
|
DBIx::Classのリレーションのモデルを日本語で解説してくれているサイトが見つけられなかったので、自分で調べてまとめてみた。 間違ってるかもしれない。特に1:1のhas_one(might_have)とbelongs_toのあたりが不安。 Catalyst::Model::DBIC::Schemaを使うときも当然同じ。 Ruby on RailsやClass::DBIではbelongs_toがhas_aになるらしい。 1:1 互いにhas_oneの例 CREATE TABLE User ( user_id text primary key, password text, .... ); C... [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|
Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践 奥さん本人の中でブームが去った感もあるRDBMSで実現するフレンド・タイムライン処理ですが、そういえばDBICで使ってみたのを思い出したので晒してみます。 要はDBICからストアドプロシージャの叩き方を知りたかっただけなんですけどね。 パッケージ名はWebインターフェースはどーせCatalystで作るでしょってことでCatalyst ... [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|
日本語コード変換を行うためのモジュールです。Jcodeの全機能は Encode module を通じてPerlに標準装備となります。 jcode.pl の機能に加えて、MIME header、 Unicodeがサポートされています。 CGI.pm CGI.pmはフォームのデータを受け取り、その値を元に動的ドキュメントを作成するなどのCGIプログラムの基本となる機能を搭載したモジュールです。[ [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|
今回は、前々回 DBIx::Simple を紹介した際に予告した本格 O/R マッパーモジュール DBIx::Class (略称 DBIC)を紹介します。 Perl の世界では、昔から Class::DBI (略称 CDBI)という優れた ORM モジュールがあり、プロダクションでもがりがり使われてきました。CDBI をより便利にする拡張もたくさん現れ、中でも Class::DBI::Sweet というモジュールがよく使われていました。この CDBI::Sweet の作者... [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|
|
typester さんに以前教えて頂いたんですが,似たようなことに今日遭遇したのでメモ。 WHERE field1 IS NOT NULL な検索をしようと思って, $resultset->search({ field1 => 'IS NOT NULL' }); と書くと,内部的には SELECT ... WHERE field1 = ? と展開されて,プレースホルダに「IS NOT NULL」が渡されるので,バツ。 $resultset->search({ field1 => { 'IS NOT' => 'NULL' } }); は SELECT ... WHERE field1 ... [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|
データベースをオンデマンドでコピーするモジュール DBIx::Replicate を書いて、CodeRepos にアップロードしました。こんな感じで使います。 use DBIx::Replicate qw/dbix_replicate/; # 20才以下の人だけを young_table にコピー (1000行毎, 最大負荷 0.5) dbix_replicate({ src_conn => $dbh, src_table => 'all_people', dst_conn => $dbh, dest_table => 'young_people', primary_keys => [ qw/id/ ], columns => [ qw/id name age/ ], block => 1000, load => 0.5, ex... [ 詳細 ] [ 関連 ] [ ニコニコ風 ]
|