The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Acrux::DBI::Res - Results of your database queries

SYNOPSIS

    use Acrux::DBI::Res;

    my $res = Acrux::DBI::Res->new(sth => $sth);

    $res->collection->map(sub { $_->{foo} })->shuffle->join("\n")->say;

DESCRIPTION

Class to works with results of your database queries

new

    my $res = Acrux::DBI::Res->new( sth => $sth, dbi => $dbi );

Construct a new Acrux::DBI::Res object

ATTRIBUTES

This method implements the following attributes

dbi

    my $dbi = $res->dbi;
    $res = $res->dbi(Acrux::DBI->new);

Acrux::DBI object these results belong to.

sth

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

Acrux::DBI statement handle results are fetched from

METHODS

This class implements the following methods

affected_rows

    my $affected = $res->affected_rows;

Number of affected rows by the query. For example

    UPDATE testtable SET id = 1 WHERE id = 1

would return 1

array

    my $array = $res->array;

Fetch one row from "sth" and return it as an array reference

    # [
    #   'foo', 'bar', 'baz'
    # ]

See also "record" in CTK::DBI

arrays

    my $arrays = $res->arrays;

Fetch all rows from "sth" and return them as an array of arrays

    # [
    #   [ 'foo', 'bar', 'baz' ],
    #   [ 'qux', 'quux' ],
    # ]

See also "table" in CTK::DBI

collection

    my $collection = $res->collection;

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

    # Process all rows at once
    say $res->collection->reduce(sub { $a + $b->{money} }, 0);

collection_list

    my $collection_list = $res->collection_list;

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

    # Process all rows at once
    say $res->collection_list->reduce(sub { $a + $b->[3] }, 0);

columns

    my $columns = $res->columns;

Return column names as an array reference

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

err

    my $err = $res->err;

Error code received

errstr

    my $errstr = $res->errstr;

Error message received

finish

    $res->finish;

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

hash

    my $hash = $res->hash;

Fetch one row from "sth" and return it as a hash reference

    # {
    #   'foo' => 1,
    #   'bar' => 'one',
    # }

See also "recordh" in CTK::DBI

hashed_by

    my $hash = $res->hashed_by( $key_field );
    my $hash = $res->hashed_by( 'id' );

This method returns a reference to a hash containing a key for each distinct value of the $key_field column that was fetched. For each key the corresponding value is a reference to a hash containing all the selected columns and their values, as returned by fetchrow_hashref()

For example:

    my $hash = $res->hashed_by( 'id' );

    # {
    #   1 => {
    #      'id'   => 1,
    #      'name' => 'foo'
    #   },
    #   2 => {
    #      'id'   => 2,
    #      'name' => 'bar'
    #   }
    # }

See "fetchall_hashref" in DBI for details

See also "tableh" in CTK::DBI

hashes

    my $hashes = $res->hashes;

Fetch all rows from "sth" and return them as an array containing hash references

    # [
    #   {
    #      'id'   => 1,
    #      'name' => 'foo'
    #   },
    #   {
    #      'id'   => 2,
    #      'name' => 'bar'
    #   }
    # ]

last_insert_id

    my $last_id = $res->last_insert_id;

That value of AUTO_INCREMENT column if executed query was INSERT in a table with AUTO_INCREMENT column

more_results

    do {
      my $columns = $res->columns;
      my $arrays = $res->arrays;
    } while ($res->more_results);

Handle multiple results

rows

    my $num = $res->rows;

Number of rows

state

    my $state = $res->state;

Error state received

text

    my $text = $res->text;

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

HISTORY

See Changes file

TO DO

See TODO file

SEE ALSO

Mojo::mysql, Mojo::Pg, Mojo::DB::Connector, CTK::DBI, DBI

AUTHOR

Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>

COPYRIGHT

Copyright (C) 1998-2024 D&D Corporation. All Rights Reserved

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See LICENSE file and https://dev.perl.org/licenses/