2010/3/15 Nilson Santos Figueiredo Jr. <span dir="ltr">&lt;<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>&gt;</span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Se eu entendi direito, um erro que (acredito eu) todos que já<br>
desenvolveram com Catalyst + DBIC + TT cometeram pelo menos uma vez.<br>
<br>
O TT avalia tudo em contexto lista, por isso está &quot;funcionando&quot;. Se<br>
você substituir o código TT, adicionando _rs ao final do método,<br>
provavelmente vai deixar de ter o resultado correto:<br>
<br>
  [% teste.locations_translations_rs.coluna_exemplo %]<br>
<br>
O que acontece é que as relações do tipo has_many (que eu imagino que<br>
$trow-&gt;locations_translations seja) retornam um objeto resultset, que<br>
representa um conjunto de rows. As colunas estão nos objetos rows e<br>
não no resulset.<br>
O que você fazer em seu código Perl é o seguinte:<br>
<div class="im"><br>
foreach my $trow (@temp) {<br>
    $c-&gt;log-&gt;debug($trow-&gt;id); # acesso a colunas da tabela principal funciona<br>
</div>    my $translations = $trow-&gt;locations_translations;<br>
    for my $translation ($translations-&gt;all) {<br>
        $c-&gt;log-&gt;debug($translation-&gt;coluna_exemplo);  # agora deve funcionar<br>
    }<br>
}<br>
<br></blockquote><div><br>Sim Nilson, agora funcionou.<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Se você realmente quiser apenas os valores das múltiplas colunas de um<br>
resultset, utilize o método get_column() - mas provavelmente não é o<br>
que você quer.<br>
<br>
Espero que tenha ficado claro.<br>
<br></blockquote><div><br>Ficou claro sim, e foi de muita ajuda.<br><br>Obrigado,<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

-Nilson<br>
<br>
<br>
2010/3/15 eutsiv :: Geovanny Junio &lt;<a href="mailto:geovanny@eutsiv.com.br">geovanny@eutsiv.com.br</a>&gt;:<br>
<div><div></div><div class="h5">&gt; Olá Companheiros, tudo bem?<br>
&gt;<br>
&gt; Não estou conseguindo resolver um problema com DBIx::Class, com certeza é<br>
&gt; uma cagada muito grande minha, mas apesar de grande ainda não consegui<br>
&gt; enxergar.<br>
&gt; O código é o seguinte:<br>
&gt;<br>
&gt; my $rs = $c-&gt;model(&#39;UaiGo::Location&#39;);<br>
&gt; my @temp = $rs-&gt;search(undef, { prefetch =&gt; &#39;location_translations&#39;,<br>
&gt; order_by =&gt; { -asc =&gt; &#39;name&#39; } })-&gt;all();<br>
&gt;<br>
&gt; foreach my $trow (@temp) {<br>
&gt;     $c-&gt;log-&gt;debug($trow-&gt;id); # acesso a colunas da tabela principal<br>
&gt; funciona<br>
&gt;     $c-&gt;log-&gt;debug($trow-&gt;locations_translations-&gt;coluna_exemplo);  # acesso<br>
&gt; a colunas da tabela do join não funciona, isso dá o erro: can&#39;t locate<br>
&gt; method coluna_exemplo.....<br>
&gt; }<br>
&gt;<br>
&gt; $c-&gt;stash-&gt;{location} = \@temp;<br>
&gt;<br>
&gt; A linha que coloquei de debug, gera um erro, alegando que o método<br>
&gt; coluna_exemplo não existe. Mas o interessante, é que pelo Template funciona:<br>
&gt;<br>
&gt; [% FOREACH teste IN c.stash.location %]<br>
&gt;     [% teste.locations_translations.coluna_exemplo %] # Imprime o conteúdo<br>
&gt; da coluna corretamente<br>
&gt; [% END %]<br>
&gt;<br>
&gt; Com certeza estou cometendo algum erro infantil, mas já li a documentação e<br>
&gt; o cookbook do DBIx::Class e não consegui resolver.<br>
&gt;<br>
&gt; Grato,<br>
&gt;<br>
&gt; --<br>
&gt; Geovanny Junio<br>
&gt; Consultor de Tecnologia<br>
&gt; geovanny (at) <a href="http://eutsiv.com.br" target="_blank">eutsiv.com.br</a><br>
&gt; +55 31 9422-8885<br>
&gt; +55 31 3393-9132<br>
&gt; <a href="http://www.eutsiv.com.br" target="_blank">www.eutsiv.com.br</a><br>
&gt;<br>
&gt; Este e-mail pode conter informação privilegiada e confidencial. Se você não<br>
&gt; é destinatário da<br>
&gt; mensagem, por favor apague a mensagem e comunique-nos o fato de imediato.<br>
&gt;<br>
&gt; This e-mail contains information that may be<br>
&gt; privileged and confidential. If you are not the intended recipient, please<br>
&gt; delete the e-mail and notify us immediately.<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; SaoPaulo-pm mailing list<br>
&gt; <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
&gt;<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</blockquote></div><br>