perl – 如何使用外部数据过滤DBIX :: Class结果集?
发布时间:2020-12-16 06:28:30 所属栏目:大数据 来源:网络整理
导读:使用 DBIx::Class,我有一个结果集,需要通过SQL无法生成的数据进行过滤.我需要做的是有效地等同于这个假设的例子: my $resultset = $schema-resultset('Service')-search(%search);my $new_resultset = $resultset-filter( sub { my $web_service = shift;
使用
DBIx::Class,我有一个结果集,需要通过SQL无法生成的数据进行过滤.我需要做的是有效地等同于这个假设的例子:
my $resultset = $schema->resultset('Service')->search(%search); my $new_resultset = $resultset->filter( sub { my $web_service = shift; return $web_service->is_available; } ); 阅读文档让我不知道如何完成这样的策略. 解决方法
由于DBIC结果集的设计目标,您无法真正做到:
>他们编译成SQL并运行单个查询,这些查询不会比您要求结果时更早. 允许通过在Perl端运行的代码进行过滤会使得实现这些属性非常繁琐,并且会隐藏这样的结果集在编写时实际运行N个查询的事实. 无论如何,你为什么要这样?为什么简单地检索结果并自己过滤它们不够? >封装? (例如,将过滤逻辑隐藏在业务逻辑层中,但在显示逻辑层中启动查询.)然后编写一个自定义ResultSet子类,该子类具有运行查询的访问器并执行所需的过滤.>开销? (例如,您将拒绝大多数结果,因此您不需要为它们创建对象的开销.)然后使用HashRefInflator. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |