diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-08-18 20:21:33 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-08-18 20:21:33 +0100 |
commit | bbe8fb87daab16ca285521658bec1dcb2fbdf4d1 (patch) | |
tree | 3ca6de0720457ed9bd54d5665c9abac19d64df1e /perllib/FixMyStreet/DB/Result/Problem.pm | |
parent | 9d8ad13ed231671f2ece5d81c5ce928807d0ba5f (diff) | |
parent | d1c90d15c2f9fd7ecb63a34c835d2c2007f290fe (diff) |
Merge branch 'speed-up-reports'
Diffstat (limited to 'perllib/FixMyStreet/DB/Result/Problem.pm')
-rw-r--r-- | perllib/FixMyStreet/DB/Result/Problem.pm | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm index 720e8cc93..19e76f6ed 100644 --- a/perllib/FixMyStreet/DB/Result/Problem.pm +++ b/perllib/FixMyStreet/DB/Result/Problem.pm @@ -502,13 +502,20 @@ Returns a hashref of bodies to which a report was sent. =cut -sub bodies($) { - my $self = shift; - return {} unless $self->bodies_str; - my $bodies = $self->bodies_str_ids; - my @bodies = $self->result_source->schema->resultset('Body')->search({ id => $bodies })->all; - return { map { $_->id => $_ } @bodies }; -} +has bodies => ( + is => 'ro', + lazy => 1, + default => sub { + my $self = shift; + return {} unless $self->bodies_str; + my $bodies = $self->bodies_str_ids; + my @bodies = $self->result_source->schema->resultset('Body')->search( + { id => $bodies }, + { prefetch => 'body_areas' }, + )->all; + return { map { $_->id => $_ } @bodies }; + }, +); sub body_names($) { my $self = shift; |