[SP-pm] DB para JSON

Blabos de Blebe blabos at gmail.com
Wed Aug 29 12:00:14 PDT 2012


DBIx::Class++

2012/8/20 Renato Santos <renato.cron em gmail.com>:
> ah sim! tem o columns! eu tentei lembro nome dele na pressa, mas não
> lembrava!
>
> http://search.cpan.org/~frew/DBIx-Class-0.08198/lib/DBIx/Class/ResultSet.pm#columns
> Value: \@columns
>
> Shortcut to request a particular set of columns to be retrieved. Each column
> spec may be a string (a table column name), or a hash (in which case the key
> is the as value, and the value is used as the select expression). Adds me.
> onto the start of any column without a . in it and sets select from that,
> then auto-populates as from select as normal. (You may also use the cols
> attribute, as in earlier versions of DBIC.)
>
> Essentially columns does the same as "select" and "as".
>
> -- só pra ficar documentado!
>
> 2012/8/20 Jose Nilton <jniltinho em gmail.com>
>>
>> Esse modo funcionou:
>>
>>     my $rs = $c->model('Users')->search({adm => 2}, {columns => [qw/ id
>> name email  adm active /]});
>>
>>     $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
>>
>>
>>  Assim retorno só algumas colunas em json na View.
>>
>> Obrigado a todos
>>
>>
>> Em 20 de agosto de 2012 10:41, Eden Cardim <eden em insoli.de> escreveu:
>>
>>> >>>>> "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
>>> =begin disclaimer
>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>
>>
>>
>>
>> --
>> .................................................................
>>   "Com Deus todas as coisas são possíveis"
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron
>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>


More information about the SaoPaulo-pm mailing list