[SP-pm] DB para JSON

Eden Cardim eden at insoli.de
Mon Aug 20 06:41:32 PDT 2012


>>>>> "Nelson" == Nelson Ferraz <nferraz em gmail.com> writes:

    Nelson> Eu sei que a pergunta foi para o Catalyst, mas não custa mostrar como
    Nelson> se faz em outros frameworks...

    Nelson>     my @all = $schema->resultset('Users')->all;

Na verdade, isso não funciona. Teria que ser:

   my @all = $schema->resultset('Users')
     ->search_rs({},
       { result_class 'DBIx::Class::ResultClass::HashRefInflator' })->all;

Senão a saída vai ser parecida com isso:

    ["MyApp::Schema::Result::User=HASH(0x7fbe8c0b2210)","MyApp::Schema::Result::User=HASH(0x7fbe8c0c1480)","MyApp::Schema::Result::User=HASH(0x7fbe8c0c1438)","MyApp::Schema::Result::User=HASH(0x7fbe8c022360)"]

E esse é justamente o problema do OP, como extrair a estrutura correta
dos objetos, e isso independe do framework web.

O código correto, com Mojolicious::Lite:

    my $self = shift;
    my @all = $schema->resultset('Users')
     ->search_rs({}, { result_class 'DBIx::Class::ResultClass::HashRefInflator' })->all;
    $self->render( json => \@all );

O código correto, com Catalyst:

    my $c = shift;
    @{$c->stash->{rows}} = $c->model('DB::Users')
     ->search_rs({}, { result_class 'DBIx::Class::ResultClass::HashRefInflator' })->all;
    $c->forward('View::JSON');

-- 
Eden Cardim                        Software sob medida            
+55 11 9644 8225              Gestão de projetos de software    
edenc em insoli.de            Gestão de servidores e bancos de dados
                            Treinamento em soluções Open Source 
     Insolide                  
Soluções de TI Ltda.     Converse conosco a respeito de como nossas 
 http://insoli.de      soluções podem ajudar o seu projeto ou empresa


More information about the SaoPaulo-pm mailing list