Perl 从数据库检索数据在DBIx::类中有很多关系

Perl 从数据库检索数据在DBIx::类中有很多关系,perl,dbix-class,Perl,Dbix Class,给出一个简单的两个表的例子-术语和定义-其中术语有许多定义,而定义属于术语,所有术语和相应的定义都将以某种方式获取和显示 以下是我到目前为止得出的结论: my $terms= $schema->resultset('Term')->search(undef, { prefetch => 'definitions', }); while (my $term = $terms->next) { my @terms; push @terms, $ter

给出一个简单的两个表的例子-术语和定义-其中术语
有许多定义,而定义
属于术语,所有术语和相应的定义都将以某种方式获取和显示

以下是我到目前为止得出的结论:

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;
  }
  ...
}
它确实起作用,但我想知道是否可以采取一种不同的、不那么粗糙的方法。

应该会有所帮助。例如,请参见


这看起来像是你要做的;我真的不知道。创建一个新数组,将其推上,然后让它超出范围,这一事实实际上毫无意义。无论如何,如果我理解正确,您所需要的只是DBIx::Class::ResultSet中的all方法。

这些示例并没有真正展示如何提取相关数据;特别是,当关系类型为
multi
时,数组只不过是此示例的一部分。
all
方法确实是我想要的。谢谢
my $terms= $schema->resultset('Term')->search(undef, {  
  prefetch => 'definitions',  
});  

my @terms = $terms->all;

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