[Dbix-class] Help with Many to Many Relationships

Jason Galea lists at eightdegrees.com.au
Wed Jun 17 11:47:48 GMT 2009


Hi Dave,

package DB::Film;

...

# has many actors
__PACKAGE__->has_many('film_actor_maps' => 'DB::FilmActorMap', 'product');
__PACKAGE__->many_to_many('actors' => 'film_actor_maps', 'actor');

__PACKAGE__->belongs_to('director' => 'DB::Director');

...

my $rs = $db->resultset('Film')->search(
  {
    director => 39,
    'film_actor_maps.actor' => 2,
  },
  {
    join => ['film_actor_maps'],
  }
);

cheers,

J

Dave Cross wrote:
> I've having a brain freeze trying to implement a query in DBIC. I'm 
> sure I'm missing something obvious.
>
> Here's the situation. Assume standard DBIC classes (created by 
> Schema::Loader).
>
> Four tables - Director, Film, Actor, ActorInFilm
>
> A Director directs many Films.
> A Film has many Actors
> An Actor is in Films
>
> So the ActorInFilm table models the many-to-many relationship between 
> Actors and Films.
>
> My problem is: given an actor and a director, get the list of films 
> that they worked on together. So the result will be a resultset 
> containing Film objects (or, alternatively, a list of Film objects).
>
> I've been thinking about it too long and I can no longer think 
> straight. Even explaining the problem in this email hasn't helped.
>
> Please tell me what I'm missing.
>
> Cheers,
>
> Dave...
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive: 
> http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk



More information about the DBIx-Class mailing list