created: 2019-04-08T09:43:30.000Z
perlのDBIx::Class::ResultSetでちょい手の込んだSELECTの例1
- searchメソッドはすごい色々できるので覚えきれない
- 特に第二引数のハッシュに渡せるものがすごい色々できる
$tab1_resultset->search(
{
# 1つ目の引数は検索条件
'tab1.id' => $id,
'okok.status' => STATUS_NOTYET
},
{
# SQLでいう射影部分 (カラム名とalias)
'+select' => [
'tab1.name',
\'COUNT(1)',
\'MIN(okok.created)'
],
'+as' => [qw/
tab_name
count
earliest_created
/],
# resultsetクラスで定義したrelationの名前を書く (テーブル名そのままではない)
join => ['okok', 'qr'],
# 自resultsetクラスはmeで表す
group_by => ['me.id'],
order_by => [
# 集計など、文字列をそのまま埋めたい場合はstringのrefをとる (injection注意)
{ -desc => \'MIN(DATE(qr.created))' },
{ -desc => \'COUNT(1)' }
]
}
);