X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCDBICompat%2FColumnsAsHash.pm;h=7b81f09928dacd9197afa81078387185747304a5;hb=b24d86a1fbeb89083bc2eeeeb286d590ffea702a;hp=9f265d6a6d870f0ddcbadc18caac99e94f5f686c;hpb=ebe790dbc130d3604bb07e9636ff0458f8b464a9;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm b/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm index 9f265d6..7b81f09 100644 --- a/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm +++ b/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm @@ -7,7 +7,7 @@ use warnings; =head1 NAME -DBIx::Class::CDBICompat::ColumnsAsHash +DBIx::Class::CDBICompat::ColumnsAsHash - Emulates the behavior of Class::DBI where the object can be accessed as a hash of columns. =head1 SYNOPSIS @@ -21,7 +21,7 @@ Emulates the I behavior of Class::DBI where the object can be acces =head2 Differences from Class::DBI -This will warn when a column is accessed as a hash key. +If C is true it will warn when a column is accessed as a hash key. =cut @@ -54,7 +54,6 @@ sub _make_columns_as_hash { warn "Skipping mapping $col to a hash key because it exists"; } - next unless $self->can($col); tie $self->{$col}, 'DBIx::Class::CDBICompat::Tied::ColumnValue', $self, $col; } @@ -81,9 +80,12 @@ sub FETCH { my $class = ref $obj; my $id = $obj->id; - carp "Column '$col' of '$class/$id' was fetched as a hash"; + carp "Column '$col' of '$class/$id' was fetched as a hash" + if $ENV{DBIC_CDBICOMPAT_HASH_WARN}; - return $obj->$col(); + return $obj->column_info($col)->{_inflate_info} + ? $obj->get_inflated_column($col) + : $obj->get_column($col); } sub STORE { @@ -92,9 +94,12 @@ sub STORE { my $class = ref $obj; my $id = $obj->id; - carp "Column '$col' of '$class/$id' was stored as a hash"; + carp "Column '$col' of '$class/$id' was stored as a hash" + if $ENV{DBIC_CDBICOMPAT_HASH_WARN}; - $obj->$col(shift); + return $obj->column_info($col)->{_inflate_info} + ? $obj->set_inflated_column($col => shift) + : $obj->set_column($col => shift); } 1;