Mojo::Pg::Results(3) Results

SYNOPSIS


use Mojo::Pg::Results;
my $results = Mojo::Pg::Results->new(sth => $sth);
$results->hashes->map(sub { $_->{foo} })->shuffle->join("\n")->say;

DESCRIPTION

Mojo::Pg::Results is a container for DBD::Pg statement handles used by Mojo::Pg::Database.

ATTRIBUTES

Mojo::Pg::Results implements the following attributes.

sth

  my $sth  = $results->sth;
  $results = $results->sth($sth);

DBD::Pg statement handle results are fetched from.

METHODS

Mojo::Pg::Results inherits all methods from Mojo::Base and implements the following new ones.

array

  my $array = $results->array;

Fetch next row from ``sth'' and return it as an array reference. Note that ``finish'' needs to be called if you are not fetching all the possible rows.

  # Process one row at a time
  while (my $next = $results->array) {
    say $next->[3];
  }

arrays

  my $collection = $results->arrays;

Fetch all rows from ``sth'' and return them as a Mojo::Collection object containing array references.

  # Process all rows at once
  say $results->arrays->reduce(sub { $a->[3] + $b->[3] });

columns

  my $columns = $results->columns;

Return column names as an array reference.

  # Names of all columns
  say for @{$results->columns};

expand

  $results = $results->expand;

Decode "json" and "jsonb" fields automatically to Perl values for all rows.

  # Expand JSON
  $results->expand->hashes->map(sub { $_->{foo}{bar} })->join("\n")->say;

finish

  $results->finish;

Indicate that you are finished with ``sth'' and will not be fetching all the remaining rows.

hash

  my $hash = $results->hash;

Fetch next row from ``sth'' and return it as a hash reference. Note that ``finish'' needs to be called if you are not fetching all the possible rows.

  # Process one row at a time
  while (my $next = $results->hash) {
    say $next->{money};
  }

hashes

  my $collection = $results->hashes;

Fetch all rows from ``sth'' and return them as a Mojo::Collection object containing hash references.

  # Process all rows at once
  say $results->hashes->reduce(sub { $a->{money} + $b->{money} });

new

  my $results = Mojo::Pg::Results->new;
  my $results = Mojo::Pg::Results->new(sth => $sth);
  my $results = Mojo::Pg::Results->new({sth => $sth});

Construct a new Mojo::Pg::Results object.

rows

  my $num = $results->rows;

Number of rows.

text

  my $text = $results->text;

Fetch all rows from ``sth'' and turn them into a table with ``tablify'' in Mojo::Util.