2

我开始学习 DBIx::Class 并且对在相关表中进行搜索有疑问:

考虑以下代码:

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

我想要的是只搜索作者在$author.
这两个搜索返回相同的结果集?
如果是,最好的方法是什么,为什么?
如果不是,有什么区别?

4

1 回答 1

6

search_related是一个结果集方法。如果你有一个 Authors 的结果集,并且你想得到一个名为“Titanic”的所有书籍的结果集,你会使用它。

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

如果$author是一个行对象,代表一行,那么你的第二行就是你如何搜索他的书。

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

行和结果集之间的区别是 DBIx::Class 的核心概念之一。您可能需要查看DBIC Manual Intro。irc.perl.org 上的#dbix-class 通常非常活跃,因此您也可以在那里找到帮助。

于 2011-08-18T18:39:40.957 回答