package Schema::Document; use base 'DBIx::Class::Core'; __PACKAGE__->table('tblDocument'); __PACKAGE__->add_columns( 'id' => { data_type=>'int', is_auto_increment=>1 }, # Other cols. ); __PACKAGE__->set_primary_key('id'); __PACKAGE__->has_many('document_authors', 'Schema::Document_Author', 'author'); __PACKAGE__->many_to_many( 'authors' => 'document_authors', 'author' ); package Schema::Author; use base 'DBIx::Class::Core'; __PACKAGE__->table('tblAuthor'); __PACKAGE__->add_columns( 'id' => { data_type=>'int', is_auto_increment=>1 }, # Other cols. ); __PACKAGE__->set_primary_key('id'); __PACKAGE__->has_many('document_authors', 'Schema::Document_Author', 'document'); __PACKAGE__->many_to_many( 'documents' => 'document_authors', 'document' ); package Schema::Document_Author; use base 'DBIx::Class::Core'; __PACKAGE__->table('tblDocument_Author'); __PACKAGE__->add_columns( 'id' => { data_type=>'int', is_auto_increment=>1 }, 'author_id' => { data_type=>'int' }. 'document_id' => { data_type=>'int' }. ); __PACKAGE__->set_primary_key('id'); __PACKAGE__->belongs_to('document' => 'Schema::Document_Author'); __PACKAGE__->belongs_to('author' => 'Schema::Document_Author'); #### my $authorsInYear_RS = $schema->resultset('Author')->search({ 'document.document_id' => { 'IN' => $doc_ids->as_query() }, }, { prefetch => { document_authors => 'document' } });