DBIC で検索結果のレコードをハッシュで受け取る方法

なぜか、perldoc DBIx::Class::ResultSet に get_column() は載ってるのに、get_columns() が載っていなかったのでメモです。

$col1 = $rs->get_column('column1');

とかじゃなくて、

{
    'column1' => 'value1',
    'column2' => 'value2',
    'column3' => 'value3',
            .
            .
            .
}

みたいに一気に取りたい時は、

my $rs = $schema->resultset('Table')->find($id);
$row = +{ $rs->get_columns };

で行けます。search() で取った複数レコードの場合とかは、

my @rows = map +{ $_->get_columns }, $rs->all;

で。

as_fdat() でも行けるのですが、

__PACKAGE__->load_components("PK::Auto", "Core", "AsFdat");

しなくて良い分楽です。