perl - 从 DBIx::Class 中的 has_many 关系中检索数据

标签 perl dbix-class

给出两个表的简单情况 - Term 和 Definition - 其中 Term has_many Definitions 和 Definition belongs_to Term,所有术语和相应的定义都将被获取并显示不知何故。

这是我到目前为止的想法:

my $terms= $schema->resultset('Term')->search(undef, {  
  prefetch => 'definitions',  
});  

while (my $term = $terms->next) {
  my @terms;
  push @terms, $term->term;

  my $definitions = $term->definitions;
  my @definitions;
  while (my $definition = $definitions->next) {
    push @definitions, $definitions;
  }
  ...
}

它完成了工作,但我想知道是否可以采用不同的、不那么笨拙的方法。

最佳答案

my $terms= $schema->resultset('Term')->search(undef, {  
  prefetch => 'definitions',  
});  

my @terms = $terms->all;

my @definitions = map $_->definitions->all, @terms;

这看起来像您正在尝试做的;我真的不知道。您创建一个新数组,插入它,然后让它超出范围这一事实根本没有任何意义。无论如何,如果我理解正确的话,您想要的只是 DBIx::Class::ResultSet 中的 all 方法。

关于perl - 从 DBIx::Class 中的 has_many 关系中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330663/

相关文章:

perl:使用字符串作为代码片段

json - perl:将字符串转换为utf-8进行json解码

regex - Perl 正则表达式捕获组和重新排列模式

perl - 按多列对数据库中的现有用户进行排序

perl - 如何获得具有 GD 的像素的正确 rgb 值?

java - 字符串类内部 - 如果使用 UTF-8,缓存字符偏移到字节关系

json - 如何将 DBIx::Class::ResultSet 转换为 JSON

database - DBIx::Class::Schema::Loader: make_schema_at 没有找到任何关系

mysql - DBIx::新建和创建类错误

perl - 如何在 Catalyst 应用程序中公开多对多标签样式关系?