X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSource.pm;h=3233e3ab4a1b45d8cd0883e6881e5e6666551e35;hb=7027fcdb42f20465bd1155f7dbc503d21b342ca8;hp=7906a12e61945ed40d22a0b8f8295125f06a1b7c;hpb=ad295412b69d88e4bf51daa6b22d048d7e8560e5;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 7906a12..3233e3a 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -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 +# inferrence) +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,7 +1678,7 @@ 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) = @_;