2010-07-25 56 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