Given a DBIx::Class resultset, for example:
my $rs = $c->model("DB::Card")->search({family_name => "Smith"});
the tutorials I've read use the stash to pass an arrayref of rows:
$c->stash->{cards} = [$rs->all];
This results in the query getting executed at this point, and the resulting objects stuffed into the stash, so they can be used in TemplateToolkit as:
[% FOREACH card IN cards %]
[% card.given_name %] [% card.family_name %]
[%END%]
Is there a proper way to have TT iterate over the rows as they get fetched from the DB?
Sure. You can pass the result set directly to TT and iterate over it in the template.
$c->stash->{cards} = $rs;
...and then:
[% WHILE (card = cards.next) %]
[% card.given_name %] [% card.family_name %]
[% END %]
Or, even better:
$c->stash(cards => $rs);
...in TT template:
[% FOREACH card = cards %]
[% card.given_name %] [% card.family_name %]
[% END %]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With