我开始学习DBIx :: Class,我对在相关表格中搜索有疑问:
请考虑以下代码:
my $books = $author->search_related('books', { name => 'Titanic' });
my $books = $author->books->search({name => 'Titanic'});
我想要的只是在$author
中搜索作者名为“泰坦尼克号”的书籍
这两个搜索返回相同的结果集?
如果是的话,最好的方法是什么?为什么?
如果不是,有什么区别?
答案 0 :(得分:6)
search_related
是一个Resultset方法。如果你有一个作者的结果集,并且你想得到他们所有名为“泰坦尼克号”的书的结果集,你就会使用它。
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通常很活跃,所以你也可以在那里找到帮助。