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