[Dbix-class] Prefetching multiple has_many relationships
Jonas Alves
jonas.alves at gmail.com
Fri Oct 6 20:10:50 CEST 2006
Hello,
When I try to prefetch two has_many relationships i get an error saying:
"Prefetch not supported with accessor 'multi'". But if i try each one
individualy all gets well.
Here are my Noticia.pm relationships:
__PACKAGE__->has_many(
assinaturas => 'Clix::Kiado::Schema::not_noticia_assinatura', 'noticia_id'
);
__PACKAGE__->has_many(
comentarios => 'Clix::Kiado::Schema::Comentario', 'noticia_id'
);
When i do this query:
my $rs = $schema->resultset('Noticia')->search(
{ 'me.id' => 95 }, {
prefetch => [qw/assinaturas/],
rows => 10,
}
);
I get the following SELECT:
SELECT me.id, assinaturas.noticia_id, assinaturas.assinatura,
assinaturas.comentario, assinaturas.local, assinaturas.prioridade,
assinaturas.apagado FROM not_noticia me LEFT JOIN
not_noticia_assinatura assinaturas ON ( assinaturas.noticia_id = me.id
) WHERE ( me.apagado = ? AND me.id = ? ) ORDER BY me.data_criacao
DESC, assinaturas.noticia_id LIMIT 10: '0', '95'
If i try to prefetch to prefetch 'comentarios' instead the query is
retrieved too.
But if i change the prefetch to => [qw/assinaturas comentarios/]
I get the error:
SELECT me.id, assinaturas.noticia_id, assinaturas.assinatura,
assinaturas.comentario, assinaturas.local, assinaturas.prioridade,
assinaturas.apagado, comentarios.id, comentarios.noticia_id,
comentarios.seccao_id, comentarios.autor, comentarios.email,
comentarios.residencia, comentarios.data_insercao,
comentarios.data_aprovacao, comentarios.user_aprovacao,
comentarios.ver_email, comentarios.ver_autor,
comentarios.classificacao, comentarios.estado_id, comentarios.apagado
FROM not_noticia me LEFT JOIN not_noticia_assinatura assinaturas ON (
assinaturas.noticia_id = me.id ) LEFT JOIN not_comentario comentarios
ON ( comentarios.noticia_id = me.id ) WHERE ( me.apagado = ? AND me.id
= ? ) ORDER BY me.data_criacao DESC, assinaturas.noticia_id,
comentarios.noticia_id LIMIT 10: '0', '95'
DBIx::Class::ResultSet::next(): Prefetch not supported with accessor
'multi' at testes/teste_schema4.pl line 40
Am I doing something wrong, or is this a bug?
--
Jonas Alves
More information about the Dbix-class
mailing list