[Dbix-class] Left join "on" conditions
Hu Hailin
i at h2l.name
Thu Apr 14 03:58:23 GMT 2011
Look at this:
http://search.cpan.org/search?query=DBIx::Class::ResultSource::View
Take care possible performance issue.
I'm afraid it is impossible to implement conditional join using "?" in
DBIx::Class.
On Tue, Apr 5, 2011 at 12:40 PM, Brian E. Lozier <brian at massassi.com> wrote:
> I've recently begun a small project and decided to try DBIx::Class. I
> am trying to use prefetch to bring in some related data but one of the
> joins should have an extra conditional on it. Here is the search:
>
> my $topics_rs = $schema->resultset('Topic')->search(
> { forum_id => $forum_id },
> {
> prefetch => 'topic_view'
> },
> );
>
>
> The Topic.pm has a relationship:
>
> __PACKAGE__->might_have(topic_view =>
> 'Fan::DB::Schema::Result::TopicView', 'topic_id');
>
> And TopicView.pm has relationships:
>
> __PACKAGE__->belongs_to(post => 'Fan::DB::Schema::Result::Post', 'post_id');
> __PACKAGE__->belongs_to(myuser => 'Fan::DB::Schema::Result::User', 'user_id');
>
> I'm trying to have the LEFT JOIN "on" condition include the user_id,
> so it gets something like this:
>
> SELECT * FROM topics LEFT JOIN topic_views ON (topics.topic_id =
> topic_views.topic_id AND topic_views.user_id = ?)
>
> The idea is that I'll always get the "topics" information and only get
> the "topic_views" information if topic_id matches and user_id matches
> whatever I pass in.
>
> Is there a way to run a search query like this?
>
> Thanks,
> Brian
>
> _______________________________________________
> 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
>
--
Sincerely,
Hu Hailin
More information about the DBIx-Class
mailing list