[Cascavel-pm] DBIx::Class - buscando dados de uma tabela de ligação

Donato Azevedo donatoaz em gmail.com
Segunda Novembro 26 04:51:23 PST 2007


On Nov 26, 2007 10:38 AM, Wallace Reis <reis.wallace em gmail.com> wrote:
>
> On Nov 26, 2007 12:07 PM, Donato Azevedo <donatoaz em gmail.com> wrote:
> > Eu tenho um relacionamento many_to_many entre veiculos e pecas, e a tabela
> > de relacionamento, veiculo_peca, contem alguns dados extras (alem dos ids do
> > veiculo e da peca).
>
> Existe também dois rel do tipo has_many: 'veiculos' -> 'veiculo_peca'
> e 'pecas' -> 'veiculo_peca'.

Concordo, isso foi o que eu disse que eu fiz...

>
>
> > Qual a melhor forma de buscar estes dados quando pesquisando pelas pecas de
> > um veiculo?
> >
> > Tipo:
> >
> > my $car = $schema->resultset('Veiculo')->find(1);
> > my $part = $car->pecas->first;
>
> my $part = $car->nome_do_rel_has_many->first;

isso tá errado, isso nao vai pegar a peça, vai pegar o relacionamento,
desta forma eu nao posso fazer algo do tipo:
$part->descricao
pois descricao é um campo da tabela de peças, eu teria de fazer
$part->peca->descricao;

>
> #...
>
> > o campo quantidade é uma coluna da tabela de ligação, porém seria
> > interessante que o objeto $part contivesse este dado, já que está ligado ao
> > objeto $car... (ou não?)
>
> daquele modo você pode chamar: $part->quantidade;

Sim, mas, como disse, nao posso chamar, por exemplo, $part->descricao,
já que, no seu caso, $part é um objeto tipo VeiculoPeca e nao um Peca

mas acho que sua idéia pode ter me ajudado... acho que posso colocar
os proxies na tabela de relacionamento...

tipo
sub descricao
{
    shift->peca->descricao;
}

obrigado pela atenção,
--
Donato Azevedo


Mais detalhes sobre a lista de discussão Cascavel-pm