X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK.pm;h=ed0b830a4302fae3d52ef7ac3a8a11ea8c012792;hb=1a14aa3f5016c456db28c148abab256ea72776df;hp=d31cfe47ee9bfba62132c5f1b7c732384baf6115;hpb=8d5134b09734852f9c11a3fd6b1c8f6551637b53;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK.pm b/lib/DBIx/Class/PK.pm index d31cfe4..ed0b830 100644 --- a/lib/DBIx/Class/PK.pm +++ b/lib/DBIx/Class/PK.pm @@ -54,18 +54,21 @@ sub find { if (ref $vals[0] eq 'HASH') { $query = $vals[0]; } elsif (@pk == @vals) { - my $ret = ($class->search_literal($class->_ident_cond, @vals, $attrs))[0]; + $query = {}; + @{$query}{@pk} = @vals; + #my $ret = ($class->search_literal($class->_ident_cond, @vals, $attrs))[0]; #warn "$class: ".join(', ', %{$ret->{_column_data}}); - return $ret; + #return $ret; } else { $query = {@vals}; } $class->throw( "Can't find unless all primary keys are specified" ) unless (keys %$query >= @pk); # If we check 'em we run afoul of uc/lc # column names etc. Not sure what to do yet - my $ret = ($class->search($query))[0]; - #warn "$class: ".join(', ', %{$ret->{_column_data}}); - return $ret; + #return $class->search($query)->next; + my @cols = $class->_select_columns; + my @row = $class->storage->select_single($class->_table_name, \@cols, $query); + return (@row ? $class->_row_to_object(\@cols, \@row) : ()); } sub discard_changes { @@ -101,7 +104,7 @@ sub primary_columns { =head1 AUTHORS -Matt S. Trout +Matt S. Trout =head1 LICENSE