[CDBI] Re: Many-to-many relationships of same type?
"Edward J. Sabol" <sabol-2oVx0MVsMgiP/[email protected]> Tue, 19 Jun 2007 13:40:26 -0400
| Newsgroups | gmane.comp.lang.perl.modules.class-dbi |
|---|---|
| Message-ID | <[email protected]> |
Ciaran Hamilton wrote: > I'm a newcomer to Class::DBI, and I'm having a problem - I need to > implement a many-to-many relationship where the objects involved are > both of the same type. The specific application is using data obtained > from LiveJournal, where users can have other users as 'friends'. I > can't seem to get this to work since it appears to use the first > object of this type. This is basically what I have in the relevant > files: [...] > __PACKAGE__->has_many(friends => [ 'LJData::Friends' => 'friend' ]); You need to use the three-argument version of has_many(). The third argument allows you to explicitly specify the name of the foreign key. I remember being confounded by this when I first started using Class::DBI many moons ago and tried to set up my first many-to-many relationship. It's a shame the Class::DBI documentation doesn't cover this aspect very well. The examples in the documentation all assume the foreign key and the class have the same name. Try this instead: __PACKAGE__->has_many(friends => [ 'LJData::Friends' => 'friend' ] => 'userid'); I hope I got that right! Later, Ed