resultset_attributes

DBICのresultset_attributesを使うとデフォルトの検索条件とか
ソート条件を指定できます。


package Your::Schema::User;
use strict;
use warnings;
use base 'DBIx::Class';

__PACKAGE__->table('user');
__PACKAGE__->resultset_attributes({ order_by => 'id DESC'});
...

1;

こんな感じでresultset_attributesを指定しておいてやると
デフォルトでid DESCになってくれる。
例えば


$self->model('User')->search(
{
name => 'nekokak'
}
)->first;
こんなのを実行すると


SELECT me.* FROM user me WHERE name = ? ORDER BY id DESC

こんなSQLが実行される。
普通だったら


$self->model('User')->search(
{
name => 'nekokak'
},
{
order_by => 'id DESC'
}
)->first;
こういう風に指定してやる必要がある。
便利便利。



__PACKAGE__->resultset_attributes({ where => {delete_fg => 0} });

こんな感じでWHERE句の指定もできて、かなり便利。