1 package DBIx::Class::ResultSet::HashRef;
6 use base qw( DBIx::Class::ResultSet );
7 use DBIx::Class::ResultClass::HashRefInflator;
9 our $VERSION = '1.002';
13 DBIx::Class::ResultSet::HashRef - Adds syntactic sugar to skip the fancy objects
17 # in your resultsource class
18 __PACKAGE__->resultset_class( 'DBIx::Class::ResultSet::HashRef' );
20 # in your calling code
21 my $rs = $schema->resultset('User')->search( { } )->hashref_rs;
22 while (my $row = $rs->next) {
26 You can chain up every L<DBIx::Class::ResultSet> method to ->hashref_rs:
28 * ->hashref_rs->all (same as ->hashref_array)
30 * ->hashref_rs->first (same as ->hashref_first)
34 This is a simple way to allow you to set result_class to L<DBIx::Class::ResultClass::HashRefInflator> to
35 skip the fancy objects.
48 Sets result_class to L<DBIx::Class::ResultClass::HashRefInflator> and returns the resultset.
54 $self->result_class('DBIx::Class::ResultClass::HashRefInflator');
58 =head2 hashref_array( )
60 Calls ->hashref_rs->all and returns depending on the calling context an array or an reference to an array.
62 my $rs = $schema->resultset('User')->search( { } )->hashref_array;
65 my @rs = $schema->resultset('User')->search( { } )->hashref_array;
71 return wantarray ? shift->hashref_rs->all : [ shift->hashref_rs->all ];
74 =head2 hashref_first( )
76 Returns the first row of the resultset inflated by L<DBIx::Class::ResultClass::HashRefInflator>.
78 my $first_row = $schema->resultset('User')->search( { } )->hashref_first;
79 print Dumper $first_row
84 return shift->hashref_rs->first;
89 Returns a hash or reference to hash, depending on the calling context. The keys of the hash are
90 the primary keys of each row returned by L</hashref_array( )>:
105 my $hashref_pk = $schema->resultset('User')->search( { } )->hashref_pk;
106 print Dumper $hashref_pk
112 my @primary_columns = $self->result_source->primary_columns;
113 croak "Multi-column primary keys are not supported." if (scalar @primary_columns > 1 );
114 croak "No primary key found." if (scalar @primary_columns == 0 );
115 my $primary_key = shift @primary_columns;
117 %hash_pk = map { $_->{$primary_key} => $_ } $self->hashref_array;
118 return wantarray ? %hash_pk : \%hash_pk ;
123 Johannes Plunien E<lt>plu@cpan.orgE<gt>
127 Robert Bohne E<lt>rbo@cpan.orgE<gt>
129 =head1 COPYRIGHT AND LICENSE
131 Copyright 2008 by Johannes Plunien
133 This library is free software; you can redistribute it and/or modify
134 it under the same terms as Perl itself.
136 Thanks to mst for his patience.
142 =item * L<DBIx::Class>
144 =item * L<DBIx::Class::ResultClass::HashRefInflator>