[SP-pm] DB para JSON

Renato Santos renato.cron at gmail.com
Mon Aug 20 19:11:24 PDT 2012


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"<http://search.cpan.org/~frew/DBIx-Class-0.08198/lib/DBIx/Class/ResultSet.pm#select>
 and "as"<http://search.cpan.org/~frew/DBIx-Class-0.08198/lib/DBIx/Class/ResultSet.pm#as>
.
-- só pra ficar documentado!

2012/8/20 Jose Nilton <jniltinho at 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 at insoli.de> escreveu:
>
> >>>>> "Nelson" == Nelson Ferraz <nferraz at 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 at 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 at 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 at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron <http://twitter.com/#!/renato_cron>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120820/c32e1625/attachment-0001.html>


More information about the SaoPaulo-pm mailing list