1#!/usr/bin/perl 2 3use Rose::DB; 4 5Rose::DB->register_db(driver => 'sqlite'); 6 7package JCS::A; 8use base 'Rose::DB::Object'; 9 10__PACKAGE__->meta->setup 11( 12 columns => [ qw(id a) ], 13 14 relationships => 15 [ 16 bs => 17 { 18 type => 'many to many', 19 map_class => 'JCS::AtoB', 20 manager_args => { with_map_records => 1 }, 21 }, 22 ], 23); 24 25package JCS::B; 26use base 'Rose::DB::Object'; 27 28__PACKAGE__->meta->setup 29( 30 columns => [ qw(id b) ], 31); 32 33package JCS::C; 34use base 'Rose::DB::Object'; 35 36__PACKAGE__->meta->setup 37( 38 columns => [ qw(id c) ], 39 40 relationships => 41 [ 42 bs => 43 { 44 type => 'many to many', 45 map_class => 'JCS::CtoB', 46 manager_args => { with_map_records => 1 }, 47 }, 48 ], 49); 50 51package JCS::AtoB; 52use base 'Rose::DB::Object'; 53 54__PACKAGE__->meta->setup 55( 56 columns => [ qw(id a_id b_id) ], 57 foreign_keys => 58 [ 59 a_id => 60 { 61 class => 'JCS::A', 62 key_columns => { a_id => 'id' }, 63 }, 64 65 b_id => 66 { 67 class => 'JCS::B', 68 key_columns => { b_id => 'id' }, 69 } 70 ], 71); 72 73package JCS::CtoB; 74use base 'Rose::DB::Object'; 75 76__PACKAGE__->meta->setup 77( 78 columns => [ qw(id c_id b_id) ], 79 foreign_keys => 80 [ 81 a_id => 82 { 83 class => 'JCS::C', 84 key_columns => { c_id => 'id' }, 85 }, 86 87 b_id => 88 { 89 class => 'JCS::B', 90 key_columns => { b_id => 'id' }, 91 } 92 ], 93); 94