On Thu, Apr 9, 2015 at 4:57 PM, Will Crawford <billcrawford1...@gmail.com> wrote:
> 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 :) > Yeah, the problem seems to returning a blessed object from inflate_result, because then DBIx::Class thinks "Ooh! A real row object! I can do all sort of things with this!" Which it can't, so BOOM! :-) /L > > On 9 April 2015 at 14:58, Lasse Makholm <la...@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 >> > > > _______________________________________________ > 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 >
_______________________________________________ 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