X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FManual%2FExample.pod;h=59b114e8094542f2c175a9ec815c46a78453c223;hb=4f90e9f81ee3fc1ed1a145c15a1676674c0c54b2;hp=2d0e2e3dcf80ff29fa0fc4c7d778f565a1b3d225;hpb=59187a3bbcf176df838b00489cb0dfc592679aad;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Manual/Example.pod b/lib/DBIx/Class/Manual/Example.pod index 2d0e2e3..59b114e 100644 --- a/lib/DBIx/Class/Manual/Example.pod +++ b/lib/DBIx/Class/Manual/Example.pod @@ -11,7 +11,7 @@ as the database frontend. The database consists of the following: table 'artist' with columns: artistid, name - table 'cd' with columns: cdid, artist, title + table 'cd' with columns: cdid, artist, title, year table 'track' with columns: trackid, cd, title @@ -70,56 +70,56 @@ Change directory back from db to the directory app: Now create some more directories: - mkdir MyDatabase - mkdir MyDatabase/Main - mkdir MyDatabase/Main/Result - mkdir MyDatabase/Main/ResultSet + mkdir MyApp + mkdir MyApp/Schema + mkdir MyApp/Schema/Result + mkdir MyApp/Schema/ResultSet Then, create the following DBIx::Class::Schema classes: -MyDatabase/Main.pm: +MyApp/Schema.pm: - package MyDatabase::Main; + package MyApp::Schema; use base qw/DBIx::Class::Schema/; __PACKAGE__->load_namespaces; 1; -MyDatabase/Main/Result/Artist.pm: +MyApp/Schema/Result/Artist.pm: - package MyDatabase::Main::Result::Artist; + package MyApp::Schema::Result::Artist; use base qw/DBIx::Class::Core/; __PACKAGE__->table('artist'); __PACKAGE__->add_columns(qw/ artistid name /); __PACKAGE__->set_primary_key('artistid'); - __PACKAGE__->has_many('cds' => 'MyDatabase::Main::Result::Cd'); + __PACKAGE__->has_many('cds' => 'MyApp::Schema::Result::Cd'); 1; -MyDatabase/Main/Result/Cd.pm: +MyApp/Schema/Result/Cd.pm: - package MyDatabase::Main::Result::Cd; + package MyApp::Schema::Result::Cd; use base qw/DBIx::Class::Core/; __PACKAGE__->load_components(qw/InflateColumn::DateTime/); __PACKAGE__->table('cd'); - __PACKAGE__->add_columns(qw/ cdid artist title/); + __PACKAGE__->add_columns(qw/ cdid artist title year/); __PACKAGE__->set_primary_key('cdid'); - __PACKAGE__->belongs_to('artist' => 'MyDatabase::Main::Result::Artist'); - __PACKAGE__->has_many('tracks' => 'MyDatabase::Main::Result::Track'); + __PACKAGE__->belongs_to('artist' => 'MyApp::Schema::Result::Artist'); + __PACKAGE__->has_many('tracks' => 'MyApp::Schema::Result::Track'); 1; -MyDatabase/Main/Result/Track.pm: +MyApp/Schema/Result/Track.pm: - package MyDatabase::Main::Result::Track; + package MyApp::Schema::Result::Track; use base qw/DBIx::Class::Core/; __PACKAGE__->table('track'); __PACKAGE__->add_columns(qw/ trackid cd title /); __PACKAGE__->set_primary_key('trackid'); - __PACKAGE__->belongs_to('cd' => 'MyDatabase::Main::Result::Cd'); + __PACKAGE__->belongs_to('cd' => 'MyApp::Schema::Result::Cd'); 1; @@ -133,13 +133,9 @@ insertdb.pl use strict; use warnings; - use MyDatabase::Main; + use MyApp::Schema; - my $schema = MyDatabase::Main->connect('dbi:SQLite:db/example.db'); - - # here's some of the SQL that is going to be generated by the schema - # INSERT INTO artist VALUES (NULL,'Michael Jackson'); - # INSERT INTO artist VALUES (NULL,'Eminem'); + my $schema = MyApp::Schema->connect('dbi:SQLite:db/example.db'); my @artists = (['Michael Jackson'], ['Eminem']); $schema->populate('Artist', [ @@ -199,9 +195,9 @@ testdb.pl: use strict; use warnings; - use MyDatabase::Main; + use MyApp::Schema; - my $schema = MyDatabase::Main->connect('dbi:SQLite:db/example.db'); + my $schema = MyApp::Schema->connect('dbi:SQLite:db/example.db'); # for other DSNs, e.g. MySQL, see the perldoc for the relevant dbd # driver, e.g perldoc L. @@ -351,20 +347,22 @@ It should output: A reference implementation of the database and scripts in this example are available in the main distribution for DBIx::Class under the -directory F. +directory F. With these scripts we're relying on @INC looking in the current -working directory. You may want to add the MyDatabase namespaces to +working directory. You may want to add the MyApp namespaces to @INC in a different way when it comes to deployment. The F script is an excellent start for testing your database model. This example uses L to load in the -appropriate L classes from the MyDatabase::Main::Result namespace, -and any required resultset classes from the MyDatabase::Main::ResultSet -namespace (although we created the directory in the directions above we -did not add, or need to add, any resultset classes). +appropriate L classes from the +C namespace, and any required +L classes from the +C namespace (although we created the directory +in the directions above we did not add, or need to add, any resultset +classes). =head1 TODO