I've got a partial solution—it does what I want (I think), but takes several queries to do it. It's based on the node I linked above. Here's what I have:

my $attrs = { order_by => "$order DESC", page => $page, rows => $rows, columns => [ qw(title title_norm description created modified + status rating owner.nickname owner.nick_norm ) ], join => [ qw(owner) ], }; my $articles = $c->model('DBIC::Articles'); # Build the query. if($owner) { $articles = $articles->search({ owner => $owner }); } if(@with) { $articles = $articles->search_related('taglinks', { tag => { -in => [ @with ] } }, { select => [ 'article', { count => '*' } ], group_by => [ 'article' ], having => [ 'COUNT( * )' => scalar(@with) ] } )->search_related('article'); } if(@without) { my $excluded = $articles->search_related('taglinks', { tag => { -in => [ @without ] }, }, { columns => [ 'article' ], group_by => [ 'article' ] } ); if($excluded) { my @excluded_ids = map { $_->id } $excluded->all; $articles = $articles->search( { id => { -not_in => \@excluded_ids } } ); } } $articles = $articles->search(undef, $attrs);

=cut
--Brent Dax
There is no sig.


In reply to Re: DBIx::Class and many-to-many searching by BrentDax
in thread DBIx::Class and many-to-many searching by BrentDax

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.