X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FManual%2FExample.pod;h=1f332fc12ef3d3360b25017e925d5783c3e31452;hb=ede99b9f99bb77ceda57e42d8046d4942e8a40fa;hp=884d7fc29b641638c4cabac1ab9f99f0f45abc6f;hpb=10d690d1fe7982871290d495b50d467a09914bb1;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Manual/Example.pod b/lib/DBIx/Class/Manual/Example.pod index 884d7fc..1f332fc 100644 --- a/lib/DBIx/Class/Manual/Example.pod +++ b/lib/DBIx/Class/Manual/Example.pod @@ -43,7 +43,7 @@ Save the following into a example.sql in the directory db CREATE TABLE artist ( artistid INTEGER PRIMARY KEY, - name TEXT NOT NULL + name TEXT NOT NULL ); CREATE TABLE cd ( @@ -60,7 +60,7 @@ Save the following into a example.sql in the directory db and create the sqlite database file: -sqlite3 example.db < example.sql + sqlite3 example.db < example.sql =head3 Set up DBIx::Class::Schema @@ -72,54 +72,56 @@ Now create some more directories: mkdir MyDatabase mkdir MyDatabase/Main + mkdir MyDatabase/Main/Result + mkdir MyDatabase/Main/ResultSet Then, create the following DBIx::Class::Schema classes: MyDatabase/Main.pm: - + package MyDatabase::Main; use base qw/DBIx::Class::Schema/; - __PACKAGE__->load_classes(qw/Artist Cd Track/); + __PACKAGE__->load_namespaces; 1; -MyDatabase/Main/Artist.pm: +MyDatabase/Main/Result/Artist.pm: - package MyDatabase::Main::Artist; + package MyDatabase::Main::Result::Artist; use base qw/DBIx::Class/; - __PACKAGE__->load_components(qw/PK::Auto Core/); + __PACKAGE__->load_components(qw/Core/); __PACKAGE__->table('artist'); __PACKAGE__->add_columns(qw/ artistid name /); __PACKAGE__->set_primary_key('artistid'); - __PACKAGE__->has_many('cds' => 'MyDatabase::Main::Cd'); + __PACKAGE__->has_many('cds' => 'MyDatabase::Main::Result::Cd'); 1; -MyDatabase/Main/Cd.pm: +MyDatabase/Main/Result/Cd.pm: - package MyDatabase::Main::Cd; + package MyDatabase::Main::Result::Cd; use base qw/DBIx::Class/; - __PACKAGE__->load_components(qw/PK::Auto Core/); + __PACKAGE__->load_components(qw/Core/); __PACKAGE__->table('cd'); __PACKAGE__->add_columns(qw/ cdid artist title/); __PACKAGE__->set_primary_key('cdid'); - __PACKAGE__->belongs_to('artist' => 'MyDatabase::Main::Artist'); - __PACKAGE__->has_many('tracks' => 'MyDatabase::Main::Track'); + __PACKAGE__->belongs_to('artist' => 'MyDatabase::Main::Result::Artist'); + __PACKAGE__->has_many('tracks' => 'MyDatabase::Main::Result::Track'); 1; -MyDatabase/Main/Track.pm: +MyDatabase/Main/Result/Track.pm: - package MyDatabase::Main::Track; + package MyDatabase::Main::Result::Track; use base qw/DBIx::Class/; - __PACKAGE__->load_components(qw/PK::Auto Core/); + __PACKAGE__->load_components(qw/Core/); __PACKAGE__->table('track'); __PACKAGE__->add_columns(qw/ trackid cd title/); __PACKAGE__->set_primary_key('trackid'); - __PACKAGE__->belongs_to('cd' => 'MyDatabase::Main::Cd'); + __PACKAGE__->belongs_to('cd' => 'MyDatabase::Main::Result::Cd'); 1; @@ -135,7 +137,7 @@ insertdb.pl 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 + # 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'); @@ -246,8 +248,8 @@ testdb.pl: } print "\n"; } - - + + sub get_cd_by_track { my $tracktitle = shift; print "get_cd_by_track($tracktitle):\n"; @@ -262,7 +264,7 @@ testdb.pl: my $cd = $rs->first; print $cd->title . "\n\n"; } - + sub get_cds_by_artist { my $artistname = shift; print "get_cds_by_artist($artistname):\n"; @@ -347,20 +349,27 @@ It should output: 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 +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 @INC in a different way when it comes to deployment. -The testdb.pl script is an excellent start for testing your database +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). + =head1 TODO =head1 AUTHOR sc_ from irc.perl.org#dbix-class Kieren Diment + Nigel Metheringham =cut