From: Darren D. <darren@DarrenDuncan.net> - 2003-08-03 20:27:36
|
I suggest that since you are explicitely declaring a class (director_xref) which implements the many-to-many relationship between 'movie' and 'director', you do not need to tell Class::DBI about the many-to-many thing generically. For example, try this: package DVD::movie; use base 'DVD::DBI'; __PACKAGE__->set_up_table('movie'); package DVD::director; use base 'DVD::DBI'; __PACKAGE__->set_up_table('director'); package DVD::director_xref; use base 'DVD::DBI'; __PACKAGE__->table('director_xref'); __PACKAGE__->columns(Primary => qw/movie director/); __PACKAGE__->has_a(movie => 'DVD::movie'); __PACKAGE__->has_a(director => 'DVD::director'); That should be all you need, and it is also more like what you would do if you were working closer to the actual database yourself. One more thing; I suggest naming the third table 'director_movie' or 'movie_director' instead of using 'xref', which is too generic; eg, what would you do under your existing setup for a name if you added a third primary item which has a many-to-many relationship with 'director'? My suggestion gets around that, and it is more descriptive to what is actually in the table. -- Darren Duncan |