Consegui fazer assim:<br><br><br>sub retorna_total_users {<br>  my $self = shift;<br>  my $rs = $self->resultset('Users')->all();<br>    <br>  return $rs;<br><br>}<br><br><br><br><div class="gmail_quote">Em 21 de agosto de 2012 09:45, Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Mas então cara, <div><br></div><div>se é pra não ficar poluido, e as consultas não são SQL escrito por você "byhand", você usa resultsets para organizar.</div>
<div><br></div><div>Tem isso no cookbook:<br><a href="http://search.cpan.org/%7Efrew/DBIx-Class-0.08198/lib/DBIx/Class/Manual/Cookbook.pod" target="_blank">http://search.cpan.org/~frew/DBIx-Class-0.08198/lib/DBIx/Class/Manual/Cookbook.pod</a></div>


<div><br></div><div>Mas, dá uma olhada nesse projeto aqui:<br><a href="https://github.com/renatocron/RNSP-PCS/tree/master/lib/RNSP/PCS" target="_blank">https://github.com/renatocron/RNSP-PCS/tree/master/lib/RNSP/PCS</a></div>
<div><br></div>

<div><br></div><div>Dentro da pasta Schema, temos:</div><div><a href="https://github.com/renatocron/RNSP-PCS/tree/master/lib/RNSP/PCS/Schema" target="_blank">https://github.com/renatocron/RNSP-PCS/tree/master/lib/RNSP/PCS/Schema</a></div>


<div>Result / Resultset / Roles</div><div><br></div><div>Result são suas tabelas</div><div>Resultset são várias linahs de uma tabelas</div><div>e roles são para mudar o comportamento das classes, no caso, um atalho para não ficar escrevendo toda hora $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');</div>


<div><br></div><div>fazendo um "<span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;line-height:16px;margin:0px;padding:0px;border:0px">with</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;line-height:16px"> </span><span style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;line-height:16px;margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">'RNSP::PCS::Schema::Role::InflateAsHashRef'</span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;line-height:16px;margin:0px;padding:0px;border:0px">;" </span>dentro do resultset, torna possivel o retorno em hashref da consulta apenas com $rs-><span style="line-height:16px;color:rgb(153,0,0);font-size:12px;white-space:pre-wrap;font-family:Consolas,'Liberation Mono',Courier,monospace;font-weight:bold">as_hashref</span></div>


<div><br></div><div>Nesse cara, <a href="https://github.com/renatocron/RNSP-PCS/blob/master/lib/RNSP/PCS/Schema/ResultSet/User.pm" target="_blank">https://github.com/renatocron/RNSP-PCS/blob/master/lib/RNSP/PCS/Schema/ResultSet/User.pm</a> ta com algumas coisas a mais de Data::Verifier, mas você pode adicionar uma </div>


<div><br></div><div>sub retorna_registros_do_xpto  {return shift->search({'xpto' => 1})->as_hashref->all ) </div><div>e ja vai retornar uma <b>array de hash </b>ai no seu controller, ficaria</div><div>


<br></div><div><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">    my @xptos = $c->model('Agencias::Users')-></span>retorna_registros_do_xpto<span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">;</span></div>


<div>    $c->stash->{json} = { linhas => \<span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">@xptos</span>}</div><div>    $c->forward /view json../</div><div class="HOEnZb"><div class="h5">


<div><br></div><div><div class="gmail_quote">2012/8/21 Jose Nilton <span dir="ltr"><<a href="mailto:jniltinho@gmail.com" target="_blank">jniltinho@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>Como eu posso acessar desse modo ?<br><br>    my $rs = $c->model('Agencias::Users')->search(undef, {columns => [qw/ id name adm email/]});<br>    $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');<br>



<br>Na minha função.<br><br><br>Quero organizar as consultas no model, para não ficar poluído o Controller. <br><br><br><br><br><br><div class="gmail_quote">Em 21 de agosto de 2012 08:44, Jose Nilton <span dir="ltr"><<a href="mailto:jniltinho@gmail.com" target="_blank">jniltinho@gmail.com</a>></span> escreveu:<div>


<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>Desculpe foi só para ilustrar:<br><br>Está assim:<br><br>Banco: Agencias:<br>Tabela: users<br>Colunas: name, email, passwd, active, adm, create<br>



<br><br>Mas fiz assim:<br><br>sub retorna_mod_adm {<div><br>    my ($self) = @_;<br>
   <br>        my $res = eval {<br></div>            $self->storage->dbh->selectrow_hashref( "SELECT email,name,adm FROM postfix_users WHERE adm = 2");<div><br>        };<br>        do { print $@; return undef } if $@;<br>




        return $res;<br>   <br>}<br><br><br><br></div>Essa função está no arquivo:<br>Myapp/lib/Model/Agencias.pm<br><br><br><br><br><div class="gmail_quote">Em 21 de agosto de 2012 08:33, Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span> escreveu:<div>



<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Pera, só uma duvida.<div><br></div><div>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)</div>




<div><div>

<div><br></div><div><br><br><div class="gmail_quote">2012/8/21 Jose Nilton <span dir="ltr"><<a href="mailto:jniltinho@gmail.com" target="_blank">jniltinho@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">






Corrigindo:<br><br>No arquivo Myapp/lib/Schema/Users.pm não funciona,<br><br>Só no Model:<br><br>Myapp/lib/Model/Users.pm<div><br><br><br>sub retorna_hora_do_banco {<br>    my ($self) = @_;<br>   <br></div>      my $res = eval {<br>






            $self->storage->dbh->selectrow_hashref( "select current_time() as foo");<div><br>
        };<br>        do { print $@; return undef } if $@;<br>        return $res;<br>   <br>}<br><br></div>Funcionou corretamente<br><br><div class="gmail_quote">Em 21 de agosto de 2012 08:24, Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span> escreveu:<div>






<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div><div><br></div><div><br><div class="gmail_quote"><div>2012/8/21 Jose Nilton <span dir="ltr"><<a href="mailto:jniltinho@gmail.com" target="_blank">jniltinho@gmail.com</a>></span><br>







<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Assim funcionou,<br><br>Na<br>Myapp/lib/Schema/Users.pm<br><br>Coloquei:<div><br><br>sub retorna_hora_do_banco {<br>    my ($self) = @_;<br>   <br>        return "Ola mundo";<br>   <br>}<br><br><br></div>

No controller:<br><br>
my $olaMundo = $c->model('Schema::Users')->retorna_hora_do_banco();<br><br><br> $c->log->debug("Debug App: ".$olaMundo);<br><br><br>Como coloco alguma consulta SQL na função retorna_hora_do_banco ?<br>









<br></blockquote></div><div><div> <span style="color:rgb(34,34,34);font-size:13px;font-family:'courier new',monospace">$self->storage->dbh-></span><span style="color:rgb(34,34,34);font-size:13px;font-family:'courier new',monospace">selectrow_hashref( "select current_time() as foo",</span></div>









<div style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif"><font face="courier new, monospace">                undef, @args );</font></div></div></div><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Pois queria colocar algumas consultas e retornar o array já convertido em json<br><br></blockquote><div> Você quer dizer retornar em array e converter pra JSON no controller->view ! não troquemos o lugar das coisas!</div>









<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br><br><br><div class="gmail_quote">Em 20 de agosto de 2012 23:41, Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span> escreveu:<div>









<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font face="arial, helvetica, sans-serif">mas o Model <b>!=</b> Schema..</font><div><div><font face="arial, helvetica, sans-serif"><br>










</font></div><div><font face="arial, helvetica, sans-serif">"Can't locate object method "retorna_hora_do_banco" via package "DBIx::Class::ResultSet"</font></div>

</div><div><font face="arial, helvetica, sans-serif">vc tentou $resultset->retorna_hora_do_banco</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">deve ser: $resultset->result_source->schema->retorna_hora_do_banco(..)</font></div>












<div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">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.</font></div>










<div><div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"><br></font><br><div class="gmail_quote">2012/8/20 Jose Nilton <span dir="ltr"><<a href="mailto:jniltinho@gmail.com" target="_blank">jniltinho@gmail.com</a>></span><br>












<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Opa Leonardo, desse modo funcionou,<br><br>Essa era a minha logica no primeiro post.<br> <br><br><div class="gmail_quote">












Em 20 de agosto de 2012 18:31, Leonardo Ruoso <span dir="ltr"><<a href="mailto:leonardo@ruoso.com" target="_blank">leonardo@ruoso.com</a>></span> escreveu:<div><div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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. <br>














<br><div class="gmail_quote">Em 20 de agosto de 2012 18:24, Jose Nilton <span dir="ltr"><<a href="mailto:jniltinho@gmail.com" target="_blank">jniltinho@gmail.com</a>></span> escreveu:<div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">














<br>Fiz esse teste:<br><br>"Can't locate object method "<font face="courier new, monospace">retorna_hora_do_banco</font>" via package "DBIx::Class::ResultSet"<br><br><br>sub <font face="courier new, monospace">retorna_hora_do_banco</font> {<br>















    my ($self) = @_;<br>    <br>        return "Ola mundo";<br>    <br>}<br><br><br>Coloquei no arquivo Myapp/lib/Schema/Schema.pm<br><br><br></blockquote></div></div></div></blockquote></div></div></div></blockquote>










</div></div></div></div></blockquote></div></div><br><br clear="all"><div><div><br>-- <br>.................................................................<br>  "Com Deus todas as coisas são possíveis"<br>


</div></div><br></div><div>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></div></blockquote></div><div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div>









<div><div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#%21/renato_cron" target="_blank">@renato_cron</a></font></div>









<br>
</div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div></div></div><div><div><br><br clear="all"><br>-- <br>.................................................................<br>  "Com Deus todas as coisas são possíveis"<br>


</div></div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div>






<div><div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#%21/renato_cron" target="_blank">@renato_cron</a></font></div>






<br>
</div>
</div></div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div></div></div><div><div><br><br clear="all"><br>-- <br>.................................................................<br>  "Com Deus todas as coisas são possíveis"<br>

</div></div></blockquote></div></div></div><div><div><br><br clear="all"><br>-- <br>.................................................................<br>  "Com Deus todas as coisas são possíveis"<br>


</div></div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div>


<div><div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#%21/renato_cron" target="_blank">@renato_cron</a></font></div>


<br>
</div>
</div></div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><br>-- <br>.................................................................<br>  "Com Deus todas as coisas são possíveis"<br>