X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRow.pm;h=a03a3d7c9c1e5887363d2c0f7e1e329dde5cfc68;hb=a910dc57df5baeac65a157a9180754754234c421;hp=e61c1c97446f4553ab088556644a632f613e7bb2;hpb=097d32271638f3d6abacb4db0bca841006536857;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Row.pm b/lib/DBIx/Class/Row.pm index e61c1c9..a03a3d7 100644 --- a/lib/DBIx/Class/Row.pm +++ b/lib/DBIx/Class/Row.pm @@ -167,7 +167,7 @@ Does C, for all column values at once. sub get_columns { my $self = shift; - return return %{$self->{_column_data}}; + return %{$self->{_column_data}}; } =head2 get_dirty_columns @@ -269,23 +269,22 @@ sub inflate_result { ref $class || $class); my $schema; PRE: foreach my $pre (keys %{$prefetch||{}}) { - my $rel_obj = $class->relationship_info($pre); - die "Can't prefetch non-eistant relationship ${pre}" unless $rel_obj; - $schema ||= $source->schema; - my $pre_class = $schema->class($rel_obj->{class}); - my $fetched = $pre_class->inflate_result( - $schema->source($pre_class), @{$prefetch->{$pre}}); + my $pre_source = $source->related_source($pre); + die "Can't prefetch non-existant relationship ${pre}" unless $pre_source; + my $fetched = $pre_source->result_class->inflate_result( + $pre_source, @{$prefetch->{$pre}}); + my $accessor = $source->relationship_info($pre)->{attrs}{accessor}; $class->throw("No accessor for prefetched $pre") - unless defined $rel_obj->{attrs}{accessor}; - PRIMARY: foreach my $pri ($rel_obj->{class}->primary_columns) { + unless defined $accessor; + PRIMARY: foreach my $pri ($pre_source->primary_columns) { unless (defined $fetched->get_column($pri)) { undef $fetched; last PRIMARY; } } - if ($rel_obj->{attrs}{accessor} eq 'single') { + if ($accessor eq 'single') { $new->{_relationship_data}{$pre} = $fetched; - } elsif ($rel_obj->{attrs}{accessor} eq 'filter') { + } elsif ($accessor eq 'filter') { $new->{_inflated_column}{$pre} = $fetched; } else { $class->throw("Don't know how to store prefetched $pre"); @@ -321,8 +320,17 @@ sub is_changed { Accessor to the ResultSource this object was created from +=head2 register_column($column, $column_info) + + Registers a column on the class and creates an accessor for it + =cut +sub register_column { + my ($class, $col, $info) = @_; + $class->mk_group_accessors('column' => $col); +} + 1; =head1 AUTHORS