X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FManual%2FExample.pod;h=2fa0492d8b7a09d99a758e1e15b7ba6f648bc92f;hb=b4b1e91cbe7dfd356c74205e1c3393525b1f37d5;hp=195c75aa9f696f9e4f37c707480f6ac698676b3c;hpb=49e87fbb47be0bb6a8cf816bda8cad2e3f7a4b20;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Manual/Example.pod b/lib/DBIx/Class/Manual/Example.pod index 195c75a..2fa0492 100644 --- a/lib/DBIx/Class/Manual/Example.pod +++ b/lib/DBIx/Class/Manual/Example.pod @@ -33,11 +33,13 @@ First make and change the directory: mkdir app cd app + mkdir db + cd db This example uses SQLite which is a dependency of DBIx::Class, so you shouldn't have to install extra software. -Save the following into a example.sql +Save the following into a example.sql in the directory db CREATE TABLE artist ( artistid INTEGER PRIMARY KEY, @@ -62,7 +64,11 @@ sqlite3 example.db < example.sql =head3 Set up DBIx::Class::Schema -First, create some dirs and change working directory: +Change directory back from db to the directory app: + + cd ../ + +Now create some more directories: mkdir MyDatabase mkdir MyDatabase/Main @@ -82,7 +88,7 @@ MyDatabase/Main/Artist.pm: package MyDatabase::Main::Artist; use base qw/DBIx::Class/; - __PACKAGE__->load_components(qw/Core/); + __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('artist'); __PACKAGE__->add_columns(qw/ artistid name /); __PACKAGE__->set_primary_key('artistid'); @@ -95,7 +101,7 @@ MyDatabase/Main/Cd.pm: package MyDatabase::Main::Cd; use base qw/DBIx::Class/; - __PACKAGE__->load_components(qw/Core/); + __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('cd'); __PACKAGE__->add_columns(qw/ cdid artist title/); __PACKAGE__->set_primary_key('cdid'); @@ -109,7 +115,7 @@ MyDatabase/Main/Track.pm: package MyDatabase::Main::Track; use base qw/DBIx::Class/; - __PACKAGE__->load_components(qw/Core/); + __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('track'); __PACKAGE__->add_columns(qw/ trackid cd title/); __PACKAGE__->set_primary_key('trackid'); @@ -127,7 +133,7 @@ insertdb.pl use MyDatabase::Main; use strict; - my $schema = MyDatabase::Main->connect('dbi:SQLite:example.db'); + 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'); @@ -182,7 +188,7 @@ insertdb.pl @tracks, ]); -=head3 Create and run the scripts +=head3 Create and run the test scripts testdb.pl: @@ -191,7 +197,9 @@ testdb.pl: use MyDatabase::Main; use strict; - my $schema = MyDatabase::Main->connect('dbi:SQLite:example.db'); + my $schema = MyDatabase::Main->connect('dbi:SQLite:db/example.db'); + # for other DSNs, e.g. MySql, see the perldoc for the relevant dbd + # driver, e.g perldoc L. get_tracks_by_cd('Bad'); get_tracks_by_artist('Michael Jackson'); @@ -339,6 +347,10 @@ It should output: =head1 Notes +A reference implentation of the database and scripts in this example +are available in the main distribution for DBIx::Class under the +directory t/examples/Schema + With these scripts we're relying on @INC looking in the current working directory. You may want to add the MyDatabase namespaces to @INC in a different way when it comes to deployment.