package CART::user; use base qw(CART::DBI); __PACKAGE__->table('user'); __PACKAGE__->columns(All => qw(id name)); __PACKAGE__->has_many(items => [qw(CART::item item)]); package CART::item; use base qw(CART::DBI); __PACKAGE__->table('item'); __PACKAGE__->columns(All => qw(id name)); __PACKAGE__->has_many(users => [qw(DVD::user user)]); package CART::cart; use base qw(CART::DBI); __PACKAGE__->table('cart'); __PACKAGE__->columns(Primary => qw/user item/); __PACKAGE__->has_a(user => 'DVD::user'); __PACKAGE__->has_a(item => 'DVD::item'); package main; for my $user (CART::user->retrieve_all) { my $items = $user->items; print $user->name; print " has no items\n" and next unless $items; print "has these items:\n"; print $_->name, "\n" for @$items; }