[Cascavel-pm] DBIx::Class - buscando dados de uma tabela de ligação
Donato Azevedo
donatoaz em gmail.com
Segunda Novembro 26 18:38:25 PST 2007
On Nov 26, 2007 11:10 AM, eden <edencardim em gmail.com> wrote:
> On Nov 26, 2007 9:54 AM, eden <edencardim em gmail.com> wrote:
> > sub search_peca {
> > my($self, $attribs) = @_;
> > my $table = $self->pecas_rel->result_source->table;
> > %$attribs = map { "${table}.${_}" => $attribs->{$_} } keys %$attribs;
> > return $self->pecas_rel->search($attribs, {join => $table,
> > prefetch => { $table => [keys %$attribs] } })
> > }
>
> opa, viajei, tem um erro aqui (escrever código no gmail é o fim da picada)
>
> sub search_peca {
> my($self, $attribs) = @_;
>
> # $rel = o nome que voce colocou no relacionamento belongs_to
> entre veiculo_peca e peca
> my $rel = 'peca';
> %$attribs = map { "${rel}.${_}" => $attribs->{$_} } keys %$attribs;
>
> # pecas_rel = nome do relacionamento has_many entre veiculo e veiculo_pecas
> return $self->pecas_rel->search($attribs, {join => $rel, prefetch
> => { $table => [keys %$attribs] } });
> }
>
> agora sim... ;)
tentei implementar esta solucao e esbarrei em diversos erros, e até
agora nao consegui:
primeiro, eis a minha funcao:
sub search_peca_rs {
my($self, $attribs) = @_;
my $table = $self->veiculo_pecas->result_source->table;
# $rel = o nome que voce colocou no relacionamento belongs_to entre
veiculo_peca e peca
my $rel = 'peca';
%$attribs = map { +"$rel.$_" => $attribs->{$_} } keys(%{$attribs});
# pecas_rel = nome do relacionamento has_many entre veiculo e veiculo_pecas
return $self->veiculo_pecas->search_rs($attribs, {join => $rel,
prefetch => { $table => [keys %$attribs] } });
}
resulta em:
Can't locate object method "table" via package
"DBIx::Class::ResultSource::Table" at
../../lib/Catalog/Schema/VeiculoEixo.pm line 87.
se substituo por
my $table = 'veiculo_peca';
a chamada no template:
[% ve_pecas = ve.search_peca_rs( { 'codigo_peca' => 'cod',
'descricao_peca' => 'desc' } ) %]
resulta em:
undef error - DBIx::Class::ResultSet::next(): No such relationship
veiculo_peca at ../../template/veiculo_eixo/veiculo_eixo_table.tt line
58
e eu agarrei aqui..
abraços!
--
Donato Azevedo
Mais detalhes sobre a lista de discussão Cascavel-pm