|
NAMEDBIx::Custom::Result - Result of select statement SYNOPSIS # Result
my $result = $dbi->select(table => 'book');
# Fetch a row and put it into array reference
while (my $row = $result->fetch) {
my $author = $row->[0];
my $title = $row->[1];
}
# Fetch only a first row and put it into array reference
my $row = $result->fetch_one;
# Fetch all rows and put them into array of array reference
my $rows = $result->fetch_all;
# Fetch a row and put it into hash reference
while (my $row = $result->fetch_hash) {
my $title = $row->{title};
my $author = $row->{author};
}
# Fetch only a first row and put it into hash reference
my $row = $result->fetch_hash_one;
my $row = $result->one; # Alias for "fetch_hash_one"
# Fetch all rows and put them into array of hash reference
my $rows = $result->fetch_hash_all;
my $rows = $result->all; # Alias for "fetch_hash_all"
ATTRIBUTESdbimy $dbi = $result->dbi; $result = $result->dbi($dbi); DBIx::Custom object. sthmy $sth = $reuslt->sth $result = $result->sth($sth); Statement handle of DBI. METHODSDBIx::Custom::Result inherits all methods from Object::Simple and implements the following new ones. allmy $rows = $result->all; Same as fetch_hash_all. fetchmy $row = $result->fetch; Fetch a row and put it into array reference. fetch_allmy $rows = $result->fetch_all; Fetch all rows and put them into array of array reference. fetch_onemy $row = $result->fetch_one; Fetch only a first row and put it into array reference, and finish statement handle. fetch_hashmy $row = $result->fetch_hash; Fetch a row and put it into hash reference. fetch_hash_allmy $rows = $result->fetch_hash_all; Fetch all rows and put them into array of hash reference. fetch_hash_onemy $row = $result->fetch_hash_one; Fetch only a first row and put it into hash reference, and finish statement handle. fetch_hash_multimy $rows = $result->fetch_hash_multi(5); Fetch multiple rows and put them into array of hash reference. fetch_multimy $rows = $result->fetch_multi(5); Fetch multiple rows and put them into array of array reference. filter $result->filter(title => sub { uc $_[0] }, author => 'to_upper');
$result->filter([qw/title author/] => 'to_upper');
Set filter for column. You can use subroutine or filter name as filter. This filter is executed after "type_rule" filter. flatmy @list = $result->flat; All values is added to flatten list. my @list = $dbi->select(['id', 'title'])->flat; "flat" method return the following data. (1, 'Perl', 2, 'Ruby') You can create key-value pair easily. my %titles = $dbi->select(['id', 'title'])->flat; kvmy $key_value = $result->kv; Get key-value pairs. my $books = $dbi->select(['id', 'title', 'author'])->kv; If "all" method return the following data: [
{id => 1, title => 'Perl', author => 'Ken'},
{id => 2, title => 'Ruby', author => 'Taro'}
]
"kv" method return the following data. {
1 => {title => 'Perl', author => 'Ken'},
2 => {title => 'Ruby', author => 'Taro'}
}
First column value become key. kvsmy $key_values = $result->kvs; Get key-values pairs. my $books = $dbi->select(['author', 'title', 'price'])->kvs; If "all" method return the following data: [
{author => 'Ken', title => 'Perl', price => 1000},
{author => 'Ken', title => 'Good', price => 2000},
{author => 'Taro', title => 'Ruby', price => 3000}
{author => 'Taro', title => 'Sky', price => 4000}
]
"kvs" method return the following data. {
Ken => [
{title => 'Perl', price => 1000},
{title => 'Good', price => 2000}
],
Taro => [
{title => 'Ruby', price => 3000},
{title => 'Sky', price => 4000}
]
}
headermy $header = $result->header; Get header column names. onemy $row = $result->one; Alias for "fetch_hash_one". stash my $stash = $result->stash;
my $foo = $result->stash->{foo};
$result->stash->{foo} = $foo;
Stash is hash reference to save some data. type_rule # Merge type rule
$result->type_rule(
# DATE
9 => sub { ... },
# DATETIME or TIMESTAMP
11 => sub { ... }
);
# Replace type rule(by reference)
$result->type_rule([
# DATE
9 => sub { ... },
# DATETIME or TIMESTAMP
11 => sub { ... }
]);
This is same as DBIx::Custom's "type_rule"'s <from>. type_rule_off$result = $result->type_rule_off; Turn "from1" and "from2" type rule off. By default, type rule is on. type_rule_on$result = $result->type_rule_on; Turn "from1" and "from2" type rule on. By default, type rule is on. type_rule1_off$result = $result->type_rule1_off; Turn "from1" type rule off. By default, type rule is on. type_rule1_on$result = $result->type_rule1_on; Turn "from1" type rule on. By default, type rule is on. type_rule2_off$result = $result->type_rule2_off; Turn "from2" type rule off. By default, type rule is on. type_rule2_on$result = $result->type_rule2_on; Turn "from2" type rule on. By default, type rule is on. valuemy $value = $result->value; Get first column's first value. my $count = $dbi->select('count(*)', table => 'book')->value;
This is almost same as the following one. my $count = $dbi->select('count(*)')->fetch_one->[0];
valuesmy $values = $result->values; Get first column's values. my $tables = $dbi->select('show tables')->values;
This is same as the following one. my $rows = $dbi->select('show tables')->fetch_all;
my $tables = [map { $_->[0] } @$rows];
|