かなり基本的な DBIx-Class プリフェッチの使用法に苦労しています。プリフェッチが使用されている場合に、結合されたテーブルから返される列を制限したいと考えています。
これ:
my $rs = $schema->resultset('CD')->search(
{}, # No searching restrictions through WHERE clause
{
prefetch => [qw/ artist /],
columns => [qw/ title artist.name /],
}
);
次の SQL を生成します。
SELECT cd.title, artist.*
FROM cd
JOIN artist ON cd.artist = artist.id
ただし、すべてのアーティストの列を掘り下げたいわけではなく、cd.title 列と artist.name 列だけを掘り下げたいと思います (この例では、私の実際の使用例はもっと複雑です)。列機能は、結合されたテーブルではなく、プライマリ テーブルでのみ機能するようです。
私はこのSQLが欲しいです:
SELECT cd.title, artist.name
FROM cd
JOIN artist ON cd.artist = artist.id
私はちょうど Catalyst/DBIx-Class で海の足を手に入れているので、ここで目がくらむほど明白な何かを見落としている可能性があります!