[Dbix-class] Is it possible to use "dumb" result classes with DBIx::Class?

Dmitry L. dim0xff at gmail.com
Thu Apr 9 15:34:49 GMT 2015


Strange. Your example just works for me.
I tried it with DBIC example ( DBIx::Class::Manual::Example ) without
any changes, just copy-paste.

And yes, I use the latest DBIC.

On 9 April 2015 at 16:58, Lasse Makholm <lasse at unity3d.com> wrote:
> I'm using DBIx::Class::ResultClass::HashRefInflator in some places where
> full row object inflation is too slow. That's fine.
>
> What I'd really like to do though, is bless the resulting hashrefs into a
> "light weight" result class that provides a few convenience methods but
> knows little to nothing about DBIx::Class.
>
> Trying something like:
>
> my $rs = $schema->resultset('MyTable')->search(...);
> $rs->result_class('MyApp::Schema::DumbResult::MyTable');
> while (my $thingy = $rs->next) {
>
> # do, do, do
>
> }
>
>
> with something like:
>
> package MyApp::Schema::DumbResult::MyTable;
>
> use strict;
> use warnings;
>
> use DBIx::Class::ResultClass::HashRefInflator;
>
> sub inflate_result
> {
> my $class = shift;
> my $result = DBIx::Class::ResultClass::HashRefInflator->inflate_result(@_);
> return bless $result, $class;
> }
>
> sub TO_JSON
> {
> my $self = shift;
> return { %$self };
> }
>
> 1;
>
>
> ...breaks for a variety of reasons it seems, because DBIx::Class wants to do
> things like setting a result source instance on the result object, etc...
>
> Is there an (easy) make this work? Or is it just in general a horrible idea?
>
> Of course I can just do:
>
> $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
> my @stuff = map { bless $_, MyApp::Schema::DumbResult::MyTable } $rs->all;
>
> ...but the other way is more convenient...
>
> Or is it more sane to subclass the ResultSet and override first(), all() and
> next() to set the result_class and bless the resulting hashrefs?
>
> Any input appreciated?
>
> /L
>
>
>
> _______________________________________________
> 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



-- 
//wbr, Dmitry L.



More information about the DBIx-Class mailing list