my $cd = Music::CD->find_or_create( { artist => "U2", title => "Boy" }); #### my @music = Music::CD->search_where( artist => [ ’Ozzy’, ’Kelly’ ], status => { ’!=’, ’outdated’ }, ); #### @cds = Music::CD->search_like( title => ’Hits%’, artist => ’Various%’); #### package Music::DBI; use base qw(Class::DBI); Music::DBI->set_db("Main", "dbi:mysql:testdb", "root", ""); package Music::Artist; use base qw(Music::DBI); Music::Artist->table("artist"); Music::Artist->columns(All => qw/artistid name/); Music::Artist->has_many(cds => "Music::CD"); package Music::CD; use base qw(Music::DBI); use Class::DBI::AbstractSearch; Music::CD->table("cd"); Music::CD->columns(All => qw/cdid artist title year/); Music::CD->has_a(artist => "Music::Artist"); my $artist = Music::Artist->create({artistid => 1, name => "U2"}); my $cd = $artist->add_to_cds({ cdid => 1, title => "October", year => 1980, }); my @cds = Music::CD->search_like(artist => "%U%"); print $_->title(), "\n" for @cds; __END__ CREATE DATABASE IF NOT EXISTS testdb; USE testdb; CREATE TABLE IF NOT EXISTS cd ( cdid INTEGER PRIMARY KEY, artist INTEGER, # references ’artist’ title VARCHAR(255), year CHAR(4) ); CREATE TABLE IF NOT EXISTS artist ( artistid INTEGER PRIMARY KEY, name VARCHAR(255) );