X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSource.pm;h=4efa0d7ef8349aac6bdc210a56802165d4c142b6;hb=ac8a5ba46f8935a712cea6717778b8e62a4083ce;hp=1dd71feed02e67c8a5858dab4540efc7937889f2;hpb=acbe81cf98e7ea585b6dbb19c9b2f08f612af5bb;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 1dd71fe..4efa0d7 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -81,6 +81,10 @@ Adds columns to the result source. If supplied key => hashref pairs, uses the hashref as the column_info for that column. Repeated calls of this method will add more columns, not replace them. +The column names given will be created as accessor methods on your +L objects, you can change the name of the accessor +by supplying an L in the column_info hash. + The contents of the column_info are not set in stone. The following keys are currently recognised/used by DBIx::Class: @@ -88,7 +92,7 @@ keys are currently recognised/used by DBIx::Class: =item accessor -Use this to set the name of the accessor for this column. If unset, +Use this to set the name of the accessor method for this column. If unset, the name of the column will be used. =item data_type @@ -139,10 +143,10 @@ generate a new key value. If not specified, L will attempt to retrieve the name of the sequence from the database automatically. -=item extras +=item extra This is used by L and L -to add extra non-generic data to the column. For example: C<< extras +to add extra non-generic data to the column. For example: C<< extra => { unsigned => 1} >> is used by the MySQL producer to set an integer column to unsigned. For more details, see L. @@ -515,6 +519,14 @@ sub add_relationship { unless $cond; $attrs ||= {}; + # Check foreign and self are right in cond + if ( (ref $cond ||'') eq 'HASH') { + for (keys %$cond) { + $self->throw_exception("Keys of condition should be of form 'foreign.col', not '$_'") + if /\./ && !/^foreign\./; + } + } + my %rels = %{ $self->_relationships }; $rels{$rel} = { class => $f_source_name, source => $f_source_name, @@ -778,7 +790,7 @@ sub resolve_condition { $self->throw_exception("Invalid rel cond val ${v}"); if (ref $for) { # Object #warn "$self $k $for $v"; - $ret{$k} = $for->get_column($v); + $ret{$k} = $for->get_column($v) if $for->has_column_loaded($v); #warn %ret; } elsif (!defined $for) { # undef, i.e. "no object" $ret{$k} = undef; @@ -988,7 +1000,11 @@ sub resultset { ) if scalar @_; return $self->resultset_class->new( - $self, $self->{resultset_attributes} + $self, + { + %{$self->{resultset_attributes}}, + %{$self->schema->default_resultset_attributes} + }, ); }