On Tue, 2014-01-07 at 00:24 +0000, Lianna Eeftinck wrote: > I would do something like this, assuming you're looking for a left join: > > Result/Task.pm: > __PACKAGE__->has_many( > "site_tasks", "Lenio::Schema::Result::SiteTask", > { 'foreign.task_id' => 'self.id' }, > { join_type => 'left', cascade_copy => 0, cascade_delete => 0 }, > ); > > ResultSet/SiteTask.pm: > sub by_site_id { > my ( $self, $site_id ) = @_; > > my $me = $self->current_source_alias; > return $self->search_rs( > { "$me.site_id" => $site_id }, > ); > } > > Then you can call this as: > my $site_task_rs = $schema->resultset('Task')->site_tasks->by_site_id( > 101 ); > > This should do the same as: > my $site_task_rs = $schema->resultset('Task')->search( > { 'site_task.site_id' => 101 }, > { join => 'site_task' }, # or prefetch rather than join > );
Thanks for the reply. I've not tried it, but unfortunately I don't think that would work. The problem is that I still want to retrieve the items from "task", but if the equivalent entry doesn't appear in site_task, for the value from the join to be a null. If I use any sort of WHERE condition, then the "task" values will be missing. Thanks, Andy _______________________________________________ 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