GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  DBIX::CLASS::MANUAL::EXAMPLE (3)

.ds Aq ’

NAME

DBIx::Class::Manual::Example - Simple CD database example

CONTENTS

DESCRIPTION

This tutorial will guide you through the process of setting up and testing a very basic CD database using SQLite, with DBIx::Class::Schema as the database frontend.

The database structure is based on the following rules:



  An artist can have many cds, and each cd belongs to just one artist.
  A cd can have many tracks, and each track belongs to just one cd.



The database is implemented with the following:



  table artist with columns:  artistid, name
  table cd     with columns:  cdid, artistid, title, year
  table track  with columns:  trackid, cdid, title



Each of the table’s first columns is the primary key; any subsequent keys are foreign keys.

    Installation

You’ll need to install DBIx::Class via CPAN, and you’ll also need to install sqlite3 (not sqlite) if it’s not already intalled.

The database/tables/data

Your distribution already comes with a pre-filled SQLite database examples/Schema/db/example.db. You can see it by e.g.



  cpanm --look DBIx::Class



If for some reason the file is unreadable on your system, you can recreate it as follows:



  cp -a <unpacked-DBIC-tarball>/examples/Schema dbicapp
  cd dbicapp
  rm db/example.db
  sqlite3 db/example.db < db/example.sql
  perl insertdb.pl



Testing the database

Enter the example Schema directory



  cd <unpacked-DBIC-tarball>/examples/Schema



Run the script testdb.pl, which will test that the database has successfully been filled.

When this script is run, it should output the following:



 get_tracks_by_cd(Bad):
 Leave Me Alone
 Smooth Criminal
 Dirty Diana

 get_tracks_by_artist(Michael Jackson):
 Billie Jean (from the CD Thriller)
 Beat It (from the CD Thriller)
 Leave Me Alone (from the CD Bad)
 Smooth Criminal (from the CD Bad)
 Dirty Diana (from the CD Bad)

 get_cd_by_track(Stan):
 The Marshall Mathers LP has the track Stan.

 get_cds_by_artist(Michael Jackson):
 Thriller
 Bad

 get_artist_by_track(Dirty Diana):
 Michael Jackson recorded the track Dirty Diana.

 get_artist_by_cd(The Marshall Mathers LP):
 Eminem recorded the CD The Marshall Mathers LP.



Discussion about the results

The data model defined in this example has an artist with multiple CDs, and a CD with multiple tracks; thus, it’s simple to traverse from a track back to a CD, and from there back to an artist. This is demonstrated in the get_tracks_by_artist routine, where we easily walk from the individual track back to the title of the CD that the track came from ($track->cd->title).

Note also that in the get_tracks_by_cd and get_tracks_by_artist routines, the result set is called multiple times with the ’next’ iterator. In contrast, get_cd_by_track uses the ’first’ result set method, since only one CD is expected to have a specific track.

This example uses load_namespaces in DBIx::Class::Schema to load in the appropriate Result classes from the MyApp::Schema::Result namespace, and any required ResultSet classes from the MyApp::Schema::ResultSet namespace (although we did not add, nor needed any such classes in this example).

FURTHER QUESTIONS?

Check the list of additional DBIC resources.

COPYRIGHT AND LICENSE

This module is free software copyright by the DBIx::Class (DBIC) authors. You can redistribute it and/or modify it under the same terms as the DBIx::Class library.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 DBIX::CLASS::MANUAL::EXAMPLE (3) 2016-02-10

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.