将 DBIx::Class::Result 转换为散列

Convert a DBIx::Class::Result into a hash

使用 DBIx::Class,谢天谢地,我找到了解决问题的方法。但我确信必须有更好的方法。

my $record = $schema->resultset("food")->create({name=>"bacon"});

我如何将这条记录变成一个简单的 hashref 而不是必须在之后立即调用。

my record = $schema->resultset("food")->search({name=>"bacon"})->hashref_array();

理想情况下,我希望能够编写一个像

一样简单的代码片段
 {record=> $record} 

而不是

{record => {name => $record->name, $record->food_id, ...}}

如果 table 有很多列,这会让我抓狂。

我猜你说的是 DBIx::Class?

my $record = $schema->resultset("food")->create({name=>"bacon"});
my %record_columns = $record->get_columns;

# or, to get a HashRef directly
my $cols = { $record->get_columns };

# or, as you've asked for
my $foo = { record => { $record->get_columns } };

您要查找的内容已包含在 DBIx::Class 中,如 DBIx::Class::ResultClass::HashRefInflator