X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;h=e62dbc1fd2e1d7b006d17795c655897bfe407de8;hb=843f8ecda2d9885b79402416f048016c1ecc4114;hp=2e3e4f3cff35837862ef9cc71aa0256d2a1c9328;hpb=6718c5f0bf2bb9528c055b5974488a6d37f1209a;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK/Auto.pm b/lib/DBIx/Class/PK/Auto.pm index 2e3e4f3..e62dbc1 100644 --- a/lib/DBIx/Class/PK/Auto.pm +++ b/lib/DBIx/Class/PK/Auto.pm @@ -7,35 +7,45 @@ use warnings; =head1 NAME -DBIx::Class::PK::Auto - Automatic Primary Key class +DBIx::Class::PK::Auto - Automatic primary key class =head1 SYNOPSIS - # In your table classes (replace PK::Auto::SQLite with your - # database) - __PACKAGE__->load_components(qw/PK::Auto::SQLite Core/); - __PACKAGE__->set_primary_key('id'); + # In your table classes (replace PK::Auto::SQLite with your database) + __PACKAGE__->load_components(qw/PK::Auto::SQLite Core/); + __PACKAGE__->set_primary_key('id'); =head1 DESCRIPTION -This class overrides the insert method to get automatically -incremented primary keys. +This class overrides the insert method to get automatically incremented primary +keys. -You don't want to be using this directly - instead load the -appropriate one for your database, e.g. C, before -C. +You don't want to be using this directly - instead load the appropriate one for +your database, e.g. C, in your table classes: + + __PACKAGE__->load_components(qw/PK::Auto::SQLite Core/); + +Note that C is specified as the leftmost argument. + +Alternatively, you can load the components separately: + + __PACKAGE__->load_components(qw/Core/); + __PACKAGE__->load_components(qw/PK::Auto::SQLite/); + +This can be used, for example, if you have different databases and need to +determine the appropriate C class at runtime. =head1 LOGIC -PK::Auto does this by letting the database assign the primary key -field and fetching the assigned value afterwards. +C does this by letting the database assign the primary key field and +fetching the assigned value afterwards. =head1 METHODS =head2 insert -Overrides insert so that it will get the value of autoincremented -primary keys. +Overrides C so that it will get the value of autoincremented primary +keys. =cut @@ -52,13 +62,13 @@ sub insert { (grep { $self->column_info($_)->{'auto_increment'} } $self->primary_columns) || $self->primary_columns; - $self->throw( "More than one possible key found for auto-inc on ".ref $self ) + $self->throw_exception( "More than one possible key found for auto-inc on ".ref $self ) if $too_many; unless (defined $self->get_column($pri)) { - $self->throw( "Can't auto-inc for $pri on ".ref $self.": no _last_insert_id method" ) - unless $self->can('last_insert_id'); - my $id = $self->last_insert_id; - $self->throw( "Can't get last insert id" ) unless $id; +# $self->throw_exception( "Can't auto-inc for $pri on ".ref $self.": no _last_insert_id method" ) +# unless $self->can('last_insert_id'); + my $id = $self->result_source->storage->last_insert_id($self->result_source); + $self->throw_exception( "Can't get last insert id" ) unless $id; $self->store_column($pri => $id); } return $ret; @@ -84,4 +94,3 @@ Matt S. Trout You may distribute this code under the same terms as Perl itself. =cut -