X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSource.pm;h=8e8da7f75f8dff7e04fd3f370a88151f46c952d6;hb=12270263042d2650cca1b9693cdab83be7099f9a;hp=151d2c8987128e028d3bb84cc306418b6ec7b37d;hpb=705f18f4b19e84e16282547f91e2294e9630382c;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 151d2c8..8e8da7f 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -84,7 +84,7 @@ created, see L for full details. =head2 Finding result source objects As mentioned above, a result source instance is created and stored for -you when you define a L. +you when you define a L. You can retrieve the result source at runtime in the following ways: @@ -96,7 +96,7 @@ You can retrieve the result source at runtime in the following ways: =item From a Result object: - $row->result_source; + $result->result_source; =item From a ResultSet object: @@ -201,7 +201,7 @@ schema, see L. { is_nullable => 1 } -Set this to a true value for a columns that is allowed to contain NULL +Set this to a true value for a column that is allowed to contain NULL values, default is false. This is currently only used to create tables from your schema, see L. @@ -627,7 +627,7 @@ sub primary_columns { # a helper method that will automatically die with a descriptive message if # no pk is defined on the source in question. For internal use to save # on if @pks... boilerplate -sub _pri_cols { +sub _pri_cols_or_die { my $self = shift; my @pcols = $self->primary_columns or $self->throw_exception (sprintf( @@ -638,6 +638,20 @@ sub _pri_cols { return @pcols; } +# same as above but mandating single-column PK (used by relationship condition +# inference) +sub _single_pri_col_or_die { + my $self = shift; + my ($pri, @too_many) = $self->_pri_cols_or_die; + + $self->throw_exception( sprintf( + "Operation requires a single-column primary key declared on '%s'", + $self->source_name || $self->result_class || $self->name || 'Unknown source...?', + )) if @too_many; + return $pri; +} + + =head2 sequence Manually define the correct sequence for your table, to avoid the overhead @@ -1664,12 +1678,12 @@ our $UNRESOLVABLE_CONDITION = \ '1 = 0'; # Resolves the passed condition to a concrete query fragment and a flag # indicating whether this is a cross-table condition. Also an optional -# list of non-triviail values (notmally conditions) returned as a part +# list of non-trivial values (normally conditions) returned as a part # of a joinfree condition hash sub _resolve_condition { my ($self, $cond, $as, $for, $rel_name) = @_; - my $obj_rel = !!blessed $for; + my $obj_rel = defined blessed $for; if (ref $cond eq 'CODE') { my $relalias = $obj_rel ? 'me' : $as;