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)
);