[Perl] DBIx::SkinnyでGROUP BY句を使うには
※何故か記載が全体的にORDER BY句になっていたので修正...
DBIx::SkinnyでGROUP BY句を使う
DBIx::SkinnyでGROUP BY句は使えないっぽい。マニュアルにも無い。Tengでは使えるみたいだけれど。resultsetでSQL組み立てれば出来るのかと思ったのだけれどどうも無理っぽい。
で、ググっていたらテストにそれらしい記述があるのを発見。ただし、DBIx::Skinny::Pager のテスト。
https://github.com/walf443/p5-dbix-skinny-pager/blob/master/t/02-functional.t
$rs->group({ column => 'カラム名' });
どうやら groupというメソッドがあるようだ。やっぱりマニュアルに載ってないけど。
作っているwebアプリはページング処理をするために丁度 DBIx::Skinny::Pager を使ってたのでこの方法で。
コード
my $rs = $self->resultset_with_pager('MySQLFoundRows'); $rs->select([qw/ entry_id entry_title /]); $rs->from(['entry']); $rs->group({ column => 'category' }); $rs->add_where( entry_status => 'public' );
構築されるSQL
SELECT SQL_CALC_FOUND_ROWS entry_id, entry_title FROM entry WHERE (entry_status = ?) GROUP BY category
生SQL使えばいい問題なんだけどね 😛
-
前の記事
YAPC::Asia 2013へ行ってきたよ 2013.09.23
-
次の記事
Net::Google::Analytics::OAuth2 で「エラーredirect_uri_mismatch」って言われてrefresh_access_tokenが取得できない時の対処方法 2013.09.27