2010-07-25 30 views
3

给定一个简单的两个表格的例子 - 术语和定义 - 其中术语has_many定义和定义belongs_to术语,将以某种方式提取和显示所有术语和相应的定义。从DBIx :: Class中检索has_many关系中的数据

这里是我想出迄今:

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; 
    } 
    ... 
} 

它的工作,但我在想,如果不同,少这些混沌的方法可以采取。

回答

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

my @terms = $terms->all; 

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

这看起来像你正在尝试做的;我真的不知道。事实上,你创建一个新的数组,推动它,然后让它超出范围并没有任何意义。无论如何,如果我正确地理解了你的所有想要的是来自DBIx :: Class :: ResultSet的全部方法。

+0

数组只是这个例子的一部分。 '全部'方法是我想要的。谢谢。 – Stan 2010-08-01 04:05:23