Showing 4 changed files with 42 additions and 8 deletions
+4 -1
Changes
... ...
@@ -1,4 +1,7 @@
1
-0.27 (2012-09-17)
1
+0.28
2
+  - DBIx::Custom::Result::kv method's multi option is DEPRECATED!
3
+    added DBIx::Custom::Result::kvs method instead.
4
+0.27
2 5
   - fixed documentation miss about execute method's table_alias option.
3 6
 0.26
4 7
   - fixed bug that when id option's value is object, don't work.
+1 -1
lib/DBIx/Custom.pm
... ...
@@ -2,7 +2,7 @@ use 5.008007;
2 2
 package DBIx::Custom;
3 3
 use Object::Simple -base;
4 4
 
5
-our $VERSION = '0.27';
5
+our $VERSION = '0.28';
6 6
 
7 7
 use Carp 'croak';
8 8
 use DBI;
+24 -5
lib/DBIx/Custom/Result.pm
... ...
@@ -256,6 +256,8 @@ sub kv {
256 256
     my $key_value = delete $row->{$key_name};
257 257
     next unless defined $key_value;
258 258
     if ($opt{multi}) {
259
+      _deprecate('0.28', "DBIx::Custom::Result::kv method's "
260
+        . 'multi option is DEPRECATED. use kvs method instead');
259 261
       $kv->{$key_value} ||= [];
260 262
       push @{$kv->{$key_value}}, $row;
261 263
     }
... ...
@@ -265,6 +267,21 @@ sub kv {
265 267
   return $kv;
266 268
 }
267 269
 
270
+sub kvs {
271
+  my ($self, %opt) = @_;
272
+
273
+  my $key_name = $self->{sth}{NAME}[0];
274
+  my $kv = {};
275
+  while (my $row = $self->fetch_hash) {
276
+    my $key_value = delete $row->{$key_name};
277
+    next unless defined $key_value;
278
+    $kv->{$key_value} ||= [];
279
+    push @{$kv->{$key_value}}, $row;
280
+  }
281
+  
282
+  return $kv;
283
+}
284
+
268 285
 sub header { shift->sth->{NAME} }
269 286
 
270 287
 *one = \&fetch_hash_one;
... ...
@@ -614,7 +631,6 @@ You can create key-value pair easily.
614 631
 =head2 C<kv>
615 632
 
616 633
   my $key_value = $result->kv;
617
-  my $key_values = $result->kv(multi => 1);
618 634
 
619 635
 Get key-value pairs.
620 636
 
... ...
@@ -636,10 +652,13 @@ C<kv> method return the following data.
636 652
 
637 653
 First column value become key.
638 654
 
639
-If value contains multipule data, you can push it to
640
-array refernce by C<multi> option.
655
+=head2 C<kvs>
641 656
 
642
-  my $books = $dbi->select(['author', 'title', 'price'])->kv(multi => 1);
657
+  my $key_values = $result->kvs;
658
+
659
+Get key-values pairs.
660
+
661
+  my $books = $dbi->select(['author', 'title', 'price'])->kvs;
643 662
 
644 663
 If C<all> method return the following data:
645 664
 
... ...
@@ -650,7 +669,7 @@ If C<all> method return the following data:
650 669
     {author => 'Taro', title => 'Sky', price => 4000}
651 670
   ]
652 671
 
653
-C<kv> method return the following data.
672
+C<kvs> method return the following data.
654 673
 
655 674
   {
656 675
     Ken => [
+13 -1
t/common.t
... ...
@@ -5,7 +5,7 @@ use Encode qw/encode_utf8/;
5 5
 use FindBin;
6 6
 use Scalar::Util 'isweak';
7 7
 
8
-$ENV{DBIX_CUSTOM_SUPPRESS_DEPRECATION} = '0.25';
8
+$ENV{DBIX_CUSTOM_SUPPRESS_DEPRECATION} = '0.28';
9 9
 
10 10
 my $dbi;
11 11
 
... ...
@@ -3767,6 +3767,18 @@ is_deeply($rows, {
3767 3767
   ]
3768 3768
 });
3769 3769
 
3770
+$result = $dbi->select([$key1, $key2], table => $table1, append => "order by $key2");
3771
+$rows = $result->kvs;
3772
+is_deeply($rows, {
3773
+  0 => [
3774
+    {$key2 => 1},
3775
+    {$key2 => 2}
3776
+  ],
3777
+  3 => [
3778
+    {$key2 => 4},
3779
+    {$key2 => 5}
3780
+  ]
3781
+});
3770 3782
 
3771 3783
 test 'DBIx::Custom::Result fetch_multi';
3772 3784
 eval { $dbi->execute("drop table $table1") };