[SP-pm] Catalyst DBIx -> lista alguns campos

Jose Nilton jniltinho at gmail.com
Tue Aug 21 05:32:50 PDT 2012


Como eu posso acessar desse modo ?

    my $rs = $c->model('Agencias::Users')->search(undef, {columns => [qw/
id name adm email/]});
    $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');

Na minha função.


Quero organizar as consultas no model, para não ficar poluído o Controller.





Em 21 de agosto de 2012 08:44, Jose Nilton <jniltinho em gmail.com> escreveu:

>
> Desculpe foi só para ilustrar:
>
> Está assim:
>
> Banco: Agencias:
> Tabela: users
> Colunas: name, email, passwd, active, adm, create
>
>
> Mas fiz assim:
>
> sub retorna_mod_adm {
>
>     my ($self) = @_;
>
>         my $res = eval {
>             $self->storage->dbh->selectrow_hashref( "SELECT email,name,adm
> FROM postfix_users WHERE adm = 2");
>
>         };
>         do { print $@; return undef } if $@;
>         return $res;
>
> }
>
>
>
> Essa função está no arquivo:
> Myapp/lib/Model/Agencias.pm
>
>
>
>
> Em 21 de agosto de 2012 08:33, Renato Santos <renato.cron em gmail.com>escreveu:
>
> Pera, só uma duvida.
>>
>> qual o package que está escrito no seu  Myapp/lib/Schema/Users.pm? pois
>> não faz muito sentido o schema do banco chamar users (seria como se todas
>> as tabelas fossem de sobre usuarios)
>>
>>
>>
>> 2012/8/21 Jose Nilton <jniltinho em gmail.com>
>>
>>> Corrigindo:
>>>
>>> No arquivo Myapp/lib/Schema/Users.pm não funciona,
>>>
>>> Só no Model:
>>>
>>> Myapp/lib/Model/Users.pm
>>>
>>>
>>>
>>> sub retorna_hora_do_banco {
>>>     my ($self) = @_;
>>>
>>>       my $res = eval {
>>>             $self->storage->dbh->selectrow_hashref( "select
>>> current_time() as foo");
>>>
>>>         };
>>>         do { print $@; return undef } if $@;
>>>         return $res;
>>>
>>> }
>>>
>>> Funcionou corretamente
>>>
>>> Em 21 de agosto de 2012 08:24, Renato Santos <renato.cron em gmail.com>escreveu:
>>>
>>>
>>>>
>>>>
>>>> 2012/8/21 Jose Nilton <jniltinho em gmail.com>
>>>>
>>>>> Assim funcionou,
>>>>>
>>>>> Na
>>>>> Myapp/lib/Schema/Users.pm
>>>>>
>>>>> Coloquei:
>>>>>
>>>>>
>>>>> sub retorna_hora_do_banco {
>>>>>     my ($self) = @_;
>>>>>
>>>>>         return "Ola mundo";
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>> No controller:
>>>>>
>>>>> my $olaMundo = $c->model('Schema::Users')->retorna_hora_do_banco();
>>>>>
>>>>>
>>>>>  $c->log->debug("Debug App: ".$olaMundo);
>>>>>
>>>>>
>>>>> Como coloco alguma consulta SQL na função retorna_hora_do_banco ?
>>>>>
>>>>>  $self->storage->dbh->selectrow_hashref( "select current_time() as
>>>> foo",
>>>>                 undef, @args );
>>>>
>>>>> Pois queria colocar algumas consultas e retornar o array já convertido
>>>>> em json
>>>>>
>>>>>  Você quer dizer retornar em array e converter pra JSON no
>>>> controller->view ! não troquemos o lugar das coisas!
>>>>
>>>>>
>>>>>
>>>>>
>>>>> Em 20 de agosto de 2012 23:41, Renato Santos <renato.cron em gmail.com>escreveu:
>>>>>
>>>>> mas o Model *!=* Schema..
>>>>>>
>>>>>> "Can't locate object method "retorna_hora_do_banco" via package
>>>>>> "DBIx::Class::ResultSet"
>>>>>> vc tentou $resultset->retorna_hora_do_banco
>>>>>>
>>>>>> deve ser: $resultset->result_source->schema->retorna_hora_do_banco(..)
>>>>>>
>>>>>> isso pois o Model só existe no contexto catalyst, e o schema serve
>>>>>> justamente para vc poder usar o schema do banco em qualquer applicação.
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2012/8/20 Jose Nilton <jniltinho em gmail.com>
>>>>>>
>>>>>>> Opa Leonardo, desse modo funcionou,
>>>>>>>
>>>>>>> Essa era a minha logica no primeiro post.
>>>>>>>
>>>>>>>
>>>>>>> Em 20 de agosto de 2012 18:31, Leonardo Ruoso <leonardo em ruoso.com>escreveu:
>>>>>>>
>>>>>>> Veja que você está chamando o método retorna_hora_do_banco de um
>>>>>>>> ResultSet, que deve mapear uma tabela no DB. Eu acho que um método como
>>>>>>>> retorna_hora_do_banco poderia estar no seu Model, provavelmente chamado DB
>>>>>>>> :-) Eu não me lembro se há um acessor default para retornar a hora do
>>>>>>>> banco, acho que não, mas meu primeiro impulso seria colocar esse método no
>>>>>>>> seu Model responsável pelo acesso ao DB e chamá-lo desse Model e não de um
>>>>>>>> ResultSet.
>>>>>>>>
>>>>>>>> Em 20 de agosto de 2012 18:24, Jose Nilton <jniltinho em gmail.com>escreveu:
>>>>>>>>
>>>>>>>>
>>>>>>>>> Fiz esse teste:
>>>>>>>>>
>>>>>>>>> "Can't locate object method "retorna_hora_do_banco" via package
>>>>>>>>> "DBIx::Class::ResultSet"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> sub retorna_hora_do_banco {
>>>>>>>>>     my ($self) = @_;
>>>>>>>>>
>>>>>>>>>         return "Ola mundo";
>>>>>>>>>
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Coloquei no arquivo Myapp/lib/Schema/Schema.pm
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> .................................................................
>>>>>   "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 <http://twitter.com/#%21/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
>>>>
>>>>
>>>
>>>
>>> --
>>> .................................................................
>>>   "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 <http://twitter.com/#%21/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
>>
>>
>
>
> --
> .................................................................
>   "Com Deus todas as coisas são possíveis"
>



-- 
.................................................................
  "Com Deus todas as coisas são possíveis"
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120821/0d77d00d/attachment-0001.html>


More information about the SaoPaulo-pm mailing list