2011-08-18 2 views
2

을 내가 DBIx :: 클래스를 배우기 시작하고 내가 관련된 테이블에서 검색에서 의심의 여지가 있습니다DBIx에서 검색하는 관계를 사용하여 :: 클래스

다음과 같은 코드를 생각해

my $books = $author->search_related('books', { name => 'Titanic' }); 
my $books = $author->books->search({name => 'Titanic'}); 

를 내가 원하는 것은 'Titanic'이라는 책을 저자가 $author에 검색하는 것입니다.
이 두 검색은 동일한 결과 집합을 반환합니까?
예인 경우 가장 좋은 방법은 무엇이며 그 이유는 무엇입니까?
아니요, 차이가 있다면 무엇입니까?

답변

6

search_related은 결과 집합 방법입니다. Authors의 결과 집합이 있고 'Titanic'이라는 모든 책의 결과 집합을 얻고 싶다면이를 사용하십시오. $author 만약

my $books = $schema->resultset('Author')->search({ last_name => 'Smith' }) 
    ->search_related('books', { name => 'Titanic' }); 

그런 다음 두 번째 줄은 당신이 그의 책을 검색 할 거라고 어떻게, 하나 개의 행을 대표하는 행 개체입니다.

my $books = $author->books->search({ name => 'Titanic' }); 

행과 결과 사이의 구별은 DBIx :: Class의 핵심 개념 중 하나입니다. DBIC Manual Intro을 검토하는 것이 좋습니다. irc.perl.org의 # dbix-class는 대개 꽤 활동적이므로 도움을받을 수 있습니다.

관련 문제