给定两个表的简单情况 - 术语和定义 - 其中术语 has_many
Definitions 和定义 belongs_to
术语,所有术语和相应的定义都将被获取并以某种方式显示。
这是我到目前为止想出的:
my $terms= $schema->resultset('Term')->search(undef, {
prefetch => 'definitions',
});
while (my $term = $terms->next) {
my @terms;
push @terms, $term->term;
my $definitions = $term->definitions;
my @definitions;
while (my $definition = $definitions->next) {
push @definitions, $definitions;
}
...
}
它可以完成这项工作,但我想知道是否可以采取一种不同的、不那么粗暴的方法。
最佳答案
my $terms= $schema->resultset('Term')->search(undef, {
prefetch => 'definitions',
});
my @terms = $terms->all;
my @definitions = map $_->definitions->all, @terms;
这看起来像您正在尝试做的事情;我真的说不出来。您创建一个新数组,推送到它,然后让它超出范围这一事实根本没有任何意义。不管怎样,如果我理解正确的话,你想要的只是来自 DBIx::Class::ResultSet 的 all 方法。
关于perl - 从 DBIx::Class 中的 has_many 关系中检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3330663/