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

Will Crawford billcrawford1970 at gmail.com
Thu Apr 9 14:57:53 GMT 2015


You _should_ just be able to subclass the HRI class and add those methods
(and pass { result_class => 'My::HRI::Subclass' } in for the RS
attributes). I haven't tested this, will do in a moment :)

On 9 April 2015 at 14: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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20150409/bbc3df26/attachment.htm>


More information about the DBIx-Class mailing list