NB。实际上,这段代码运行正常,我的路线中只有一个错误。 我会在这里留下这个问题,以防它对某人有用......
我不确定如何在Mojolicious模板中访问搜索结果
例如,我试过这个,这不起作用:
sub list {
my $self= shift;
#Return a list of questions
my @list = $self->db->resultset('Question')->search({}, {order_by => { -desc => 'q_order' }});
$self->stash(list => \@list);
}
然后在我的模板中
% for my $item (@$list) {
<%= $item->question %>
<%= $item->explanation %> <br />
% }
然而,这会产生错误
Not an ARRAY reference at template line x (where line x is the line containing @$list)
我尝试了其他各种各样的事情 如果我在列表上下文中调用搜索并转储结果,我可以看到我得到一个'Schema :: Result :: Question'对象的列表 - 这是正确的。
我只是不确定如何循环访问模板中的数据?
答案 0 :(得分:0)
$self->db->resultset('Question')->search({}, {order_by => { -desc => 'q_order' }})
返回结果集。
你可以这样打电话给 - &gt;全部(你错过了->all
)
my @list = $self->db->resultset('Question')->search({}, {order_by => { -desc => 'q_order' }})->all;
或者,您可以像这样迭代结果集:
my $rs = $self->db->resultset('Question')->search({}, {order_by => { -desc => 'q_order' }});
while ( my $question = $rs->next ){
# do things with $question
}
这并没有立即获取所有这些问题,但是,因为它是一个结果集,它只在被调用时执行(即你开始迭代)。
这可能是第二种方法的优势。