Query (für m:n relation)

  • Und wer schreibt mir das jetzt als DBIx::Class search argument?



    Niemand, würde ich mal vermuten. Schon gar nicht wenn du die Frage so stellst als ob dir irgendjemand was schulden würde.

    Aber für den Anfang gebe ich dir einen Tipp: Sich im Internet eine fertige Query zu suchen (die zudem sicher auch einfacher geschrieben werden kann), und sie dann in irgendwas anderes übersetzen zu wollen, führt in der Regel nicht zum Ziel. Schau dir lieber die Grundlagen zur DBIx::Class ordentlich an und entwickle die Anfrage schrittweise.

  • Betrachte mein posting als Dialog mit mir selber. Ich erwarte mir nicht, dass jemand meine Arbeit erledigt schon gar nicht wenn ich's so fomuliere.

    Die DBIx::Class Dokumentation ist mir gut bekannt. Die Query allerdings nicht trivial und da ich schon ne Weile an dem Problem arbeite ist mir die Meldung quasi rausgerutscht.

    Sorry

    I like Toast!

    Einmal editiert, zuletzt von davewood (3. Oktober 2010 um 14:54)

  • Bringt nicht so viel aber wenn mal jemand drüberstolpern sollte.

    Code
    return $self->search(
               {
                   tag_id => { -in => \@tag_ids },
               },
               {
                   join        => 'picture_tags',
                   group_by    => ['me.id', 'me.name'],
                   having      => { 'count(tag_id)' => { '=', scalar @tag_ids } }
               }
           );

    I like Toast!

  • Code
    return $self->search (
                { map { 'picture_tags' . ($_ ? '_' . ($_+1) : '') . '.tag_id' => $enabled_tag_ids[$_] } (0 .. $#enabled_tag_ids) },
                { join => [ ('picture_tags') x @enabled_tag_ids ] }
            );

    multijoin much faster then group_by&having solution

    thanks to ribasushi @ #dbix-class

    ps: limit size of @enabled_tag_ids

    I like Toast!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!