perl - 如何使用recursive_update

标签 perl dbix-class

我刚刚开始使用 DBx::Class 并开始稍微理解,但它很复杂。

我想调用“recursive_update”,但我无法管理如何使用它。

如果我理解 documentation对了,我必须将它包含在由 DBIx::Class::Schema::Loader 创建的 .../My/Schema.pm 中?

__PACKAGE__->load_namespaces(default_resultset_class => '+DBIx::Class::ResultSet::RecursiveUpdate');

当我想要更新数据时,我将 ResultSet 与关系结合使用。

my $result = $schema->resultset('Table')->find($id});
$result->recursive_update({
            'rel_table' => [....),
});

不幸的是我遇到了一个错误:

Can't locate object method "recursive_update" via package My::Schema::Result::Table"

我的错在哪里?

最佳答案

recursive_update 必须在 ResultSet 对象上调用,而不是在 Result 对象上调用。

您可能想向您的 Result 基类添加一个辅助方法(如果您已经有其他方法创建它,因为它对很多事情都有意义),该方法获取仅限于调用它的 Result 对象的 ResultSet 并调用 recursive_update就可以了。

关于perl - 如何使用recursive_update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74090103/

相关文章:

arrays - 将多个局部变量分配给 perl 中的数组条目

perl - 是否有搜索多余代码的模块?

perl - 为什么要使用警告;最后走?

sql - 查询以获取数据库中树的所有祖先/后代?

sql - Perl:DBIx::Class 初学者 - 子集关系和预取

Perl 中的正则表达式组 : how to capture elements into array from regex group that matches unknown number of/multiple/variable occurrences from a string?

perl - 如何在 perl 中按降序对散列值进行排序?

perl - SQL LIKE AND NOT LIKE 语句对应的 Perl DBIx::Class

perl - 为什么我从 DBIx::Class::InflateColumn::DateTime 对象中使用 sprintf 中的未初始化值?

perl - 在使用模板工具包的 Catalyst 项目中显示 DBIx::Class ResultSet 的正确方法是什么?