2

私はDBIx::Classの学習を始めていますが、関連するテーブルを検索することに疑問があります:

次のコードを検討してください。

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

私が望むのは、 の著者による「タイタニック」という名前の本のみを検索することです$author
この 2 つの検索は同じ結果セットを返しますか?
はいの場合、最善の方法とその理由は何ですか?
いいえの場合、違いは何ですか?

4

1 に答える 1

6

search_related結果セットメソッドです。Authors の結果セットがあり、'Titanic' という名前のすべての書籍の結果セットを取得したい場合に、これを使用します。

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

$authorが 1 つの行を表す行オブジェクトの場合、2 行目は彼の本を検索する方法です。

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

行と結果セットの違いは、DBIx::Class の核となる概念の 1 つです。DBIC Manual Introを確認することをお勧めします。irc.perl.org の #dbix-class は通常かなり活発なので、そこでもヘルプを見つけることができます。

于 2011-08-18T18:39:40.957 に答える