Perl ResultSet和对象之间的区别是什么?

Perl ResultSet和对象之间的区别是什么?,perl,resultset,dbix-class,Perl,Resultset,Dbix Class,我们从中了解到: WARNING If called on an object, proxies to "new_result" instead, so my $cd = $schema->resultset('CD')->new({ title => 'Spoon' }); will return a CD object, not a ResultSet, and is equivalent to: my $cd = $schema->resultset('CD')-&

我们从中了解到:

WARNING
If called on an object, proxies to "new_result" instead, so
my $cd = $schema->resultset('CD')->new({ title => 'Spoon' });
will return a CD object, not a ResultSet, and is equivalent to:
my $cd = $schema->resultset('CD')->new_result({ title => 'Spoon' });

有人能解释一下对象和结果集之间的区别吗?

警告是关于对结果集对象调用
new
和结果集类名之间的区别。如果要使用ResultSet构造函数创建新的ResultSet对象,请在ResultSet包上调用
new

my $resultset = DBIx::Class::ResultSet->new(...);
(虽然通常不必以这种方式创建ResultSet对象。)如果对ResultSet对象调用
new
,则不会得到新的ResultSet对象,而是得到相应的结果(行)对象:


许多其他Perl类在类名称或类的对象上调用
new
都没有区别,因此出现了警告。

摘自DBIx::class::ResultSet文档:

DBIx::Class::ResultSet-表示用于获取一组结果的查询。ResultSet是存储表示查询的一组条件的对象

ResultSet是表示查询的特定对象。对象(不是ResultSet对象)是DBIx中定义的表中的单个实体

假设你有一个父亲和儿子的数据库,一对多(每个父亲可以有许多儿子)。因此,DBIx上下文中的单亲父亲是对象,儿子也是对象。但查询“哪位父亲有一个儿子叫詹姆斯”是一个ResultSet对象

my $row = $resultset->new(...);