logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

DBIx::Class::Helper::ResultClass::Tee - Inflate to multiple result classes at the same time

Author

       Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

Description

       This result class has one obvious use case: when you have prefetched data and
       DBIx::Class::ResultClass::HashRefInflator is the simplest way to access all the data, but you still want
       to use some of the methods on your existing result class.

       The other important raisond'être of this module is that it is an example of how to make a
       "parameterized" result class.  It's almost a secret that DBIx::Class supports using objects to inflate
       results.  This is an incredibly powerful feature that can be used to make consistent interfaces to do all
       kinds of things.

       Once when I was at Micro Technology Services, Inc. I used it to efficiently do a "reverse synthetic,
       LIKE-ish join".  The "relationship" was basically "foreign.name =~ self.name", which cannot actually be
       done if you want to go from within the database, but if you are able to load the entire foreign table
       into memory this can be done on-demand, and cached within the result class for (in our case) the duration
       of a request.

Name

       DBIx::Class::Helper::ResultClass::Tee - Inflate to multiple result classes at the same time

Synopsis

          my ($hashref, $obj) = $rs->search(undef, {
             result_class => DBIx::Class::Helper::ResultClass::Tee->new(
                inner_classes => [ '::HRI', 'MyApp::Schema::Result::User'],
             ),
          })->first->@*;

       (If you've never seen "->@*" before, check out "Postfix-Dereference-Syntax" in perlref, added in Perl
       v5.20!)

See Also