perl - Perl 如何使用 DBIx::Class 漂亮地返回数据
问题描述
我是 DBIx::Class 的新手。我将它用于 API 以从我的数据库中重新调整数据,我想用 DBIC 重新创建一个 SELECT * FROM 表。使用 DBI 对我来说效果很好。
返回“漂亮”数据的最佳方法是什么?
我想以哈希数组的形式返回数据,例如:
[
{
id => 123,
name => 'name',
....
}
]
但是随着my @rs = $schema->resultset('Product')->all; return \@rs;
. 我没有得到我想要的输出。在使用 Data::Dumper 检查对象时,我得到以下信息:
$VAR1 = bless( {
'_column_data' => {
'name' => 'test',
'id' => 123'
},
'_result_source' => $VAR1->{'_result_source'},
'_in_storage' => 1
}, 'DB::Schema::Result::Product' );
我确定我误解了 DBIC 的概念。
如何仅获取所有列的数据?谢谢大家的帮助!
解决方案
Data::Dumper 只是泄露了数据结构的核心。这就是代表 Product 表的单行的 DB::Schema::Result::Product 对象的核心。
如果你想要一个对象的漂亮输出,你需要询问对象。您可以对它们调用DBIx::Class::Row方法。如果您只需要对象中的行数据,请使用get_columns
or get_inflated_columns
。他们返回一个哈希,所以你需要参考。
my @rows = map { my %h = $_->get_columns; \%h } @rs;
推荐阅读
- string - 从给定单词列表中查找是否有一个错字单词的最佳方法
- npm - 如何跳过通过“npm ci”安装可选依赖项?
- android - 如何使用折线的 setTag 在谷歌地图中保存自定义数据
- git - 为什么 git 有时会显示,有时不会显示消息“您的分支在 n 次提交之前领先于 'whatever/upstream'?”
- html - 重叠 div 的动态/响应式解决方案
- swift - 从 WKWebView 生成 PDF 时不需要的右边距
- python - 如何解决 Python 中未找到 Html 模块的错误?
- android - 如何使用房间更改日期格式?
- javascript - 使用 React Typescript CRA 设置 Electron
- angular - 我怎样才能去实现角度源代码?