Was*_*ime 2 perl dbi dbix-class
我是 DBIx::Class 的新手。我将它用于 API 以从我的数据库重新调整数据,我想用 DBIC 重新创建一个 SELECT * FROM 表。有了 DBI,它对我来说效果很好。
返回“美丽”数据的最佳方法是什么?
我想以散列数组形式返回数据,例如:
[
{
id => 123,
name => 'name',
....
}
]
Run Code Online (Sandbox Code Playgroud)
但是随着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' );
Run Code Online (Sandbox Code Playgroud)
我确定我误解了 DBIC 的概念。
如何仅获取所有列的数据?谢谢大家的帮助!
Data::Dumper 只是泄露了数据结构的内容。这是 DB::Schema::Result::Product 对象的核心,它代表 Product 表的单行。
如果你想要一个对象的漂亮输出,你需要向对象询问。您可以对它们调用DBIx::Class::Row方法。如果您只需要对象中的行数据,请使用get_columns或get_inflated_columns。他们返回一个散列,所以你需要参考。
my @rows = map { my %h = $_->get_columns; \%h } @rs;
Run Code Online (Sandbox Code Playgroud)
我能想到的最简单的方法是 get_inflated_columns 方法。
map {{$_->get_inflated_columns}} $rs->all
Run Code Online (Sandbox Code Playgroud)
考虑使用Data::Dump,如果你真的想要漂亮的东西,Data::Printer。
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |