En este ejemplo a continuación:DBIx :: ejemplo Clase
my $rs = $schema->resultset('CD')->search(
{
'artist.name' => 'Bob Marley'
'liner_notes.notes' => { 'like', '%some text%' },
},
{
join => [qw/ artist liner_notes /],
order_by => [qw/ artist.name /],
}
);
El DBIx cookbook dice que este es el SQL que se generarán:
# Equivalent SQL:
# SELECT cd.*, artist.*, liner_notes.* FROM cd
# JOIN artist ON cd.artist = artist.id
# JOIN liner_notes ON cd.id = liner_notes.cd
# WHERE artist.name = 'Bob Marley'
# ORDER BY artist.name
Pero desde el resto del libro de cocina, me han estado llevan a creer que la consulta sólo se seleccionaría cd *, a menos que por supuesto captación previa se utilizó como tal:.
my $rs = $schema->resultset('CD')->search(
{
'artist.name' => 'Bob Marley'
'liner_notes.notes' => { 'like', '%some text%' },
},
{
join => [qw/ artist liner_notes /],
order_by => [qw/ artist.name /],
prefetch => [qw/ artist liner_notes/],
}
);
A continuación se muestra la afirmación de que me lleva a creer esto:
[Prefetch] allows you to fetch results from related tables in advance
Puede alguien explicarme bien lo que me falta aquí? ¿O no? ¡Muchas gracias!
así en el ejemplo anterior, el SQL sería cambiado a simplemente "seleccionar CD. *"? – srchulo
para el sql equivalente - eso es correcto – stevenl