2010-07-25 2 views
3

Term 및 Definition - Term has_many 정의 및 정의 belongs_to Term, 모든 용어 및 해당 정의를 어떻게 든 가져와 표시해야하는 간단한 경우를 생각해보십시오. 여기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; 
    } 
    ... 
} 

그것은 일을하지만, 다른 덜 crufty 접근 방식을 취할 수 있는지 궁금 해서요.

답변

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

my @terms = $terms->all; 

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

이것은 사용자가하려는 것처럼 보입니다. 나는 정말로 말할 수 없다. 새로운 배열을 만들고 그 배열을 밀어 넣은 다음 범위를 벗어난다는 사실은 전혀 의미가 없습니다. 어쨌든, 내가 올바르게 이해했다면 DBIx :: Class :: ResultSet의 모든 메소드를 원했습니다.

+0

배열은이 예제의 일부일뿐입니다. 'all' 메소드는 제가 실제로 원했던 것입니다. 감사. – Stan