Class::DBI::Plugin::AggregateFunction - create aggregate function for Class::DBI
SYNOPSYS
package MyData::CD;
use base qw/Class::DBI/;
use Class::DBI::Plugin::AggregateFunction;
__PACKAGE__->mk_aggregate_function('sum');
__PACKAGE__->mk_aggregate_function( max => 'maximum');
package main;
# SELECT MAX(price) FROM __TABLE__
$max = MyData::CD->maximum( 'price' );
# SELECT SUM(price) FROM __TABLE__ WHERE artist = 'foo'
$sum = MyData::CD->sum( 'price', artist => 'foo', );
$sum = MyData::CD->sum( 'price', {
price => {'>=', 1000},
});
DESCRIPTION
Class::DBIを使ったテーブルで簡単に集約関数が使えるようになります。
使い方 =head2 集約関数メソッドを作る
mk_aggregate_functionメソッドを使って集約関数を追加します。
第1引数にSQLで利用する集約関数を、第2引数にメソッド名を指定します。
メソッド名が省略された場合は、集約関数名がメソッド名になります。
__PACKAGE__->mk_aggregate_function( 'max' );
または
__PACKAGE__->mk_aggregate_function( 'max' => 'maximum' );
集約関数メソッドを使う
集約関数の第1引数に、対象となるカラム名を記述します。
$max_price = MyData::CD->maximum( 'price' );
第2引数以降はClass::DBI::AbstractSearchのsearch_whereメソッドと同様の記述ができます。
# SELECT SUM(price) FROM __TABLE__ WHERE artist = 'foo'
$total_price = MyData::CD->sum( 'price',
'artist' => 'foo',
);
または
# SELECT SUM(price) FROM __TABLE__ WHERE price >= 1000
$total_price = MyData::CD->sum( 'price', {
'price' => {'>=', 1000},
});
AUTHOR
ASAKURA Takuji <asakura.takuji+cpan@gmail.com>
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.