10 my $schema = DBICTest->init_schema();
12 $schema->resultset('Artist')->create(
18 title => 'Song of a Foo',
21 { title => 'Foo Me Baby One More Time' },
22 { title => 'Foo Me Baby One More Time II' },
23 { title => 'Foo Me Baby One More Time III' },
24 { title => 'Foo Me Baby One More Time IV', cd_single => {
25 artist => 1, title => 'MO! Single', year => 2021, tracks => [
26 { title => 'singled out' },
27 { title => 'still alone' },
32 { producer => { name => 'riba' } },
33 { producer => { name => 'sushi' } },
37 title => 'Song of a Foo II',
40 { title => 'Quit Playing Games With My Heart' },
41 { title => 'Bar Foo' },
42 { title => 'Foo Bar', cd_single => {
43 artist => 2, title => 'MO! Single', year => 2020, tracks => [
44 { title => 'singled out' },
45 { title => 'still alone' },
50 { producer => { name => 'riba' } },
51 { producer => { name => 'sushi' } },
55 artwork_to_artist => [
56 { artwork => { cd_id => 1 } },
57 { artwork => { cd_id => 2 } }
62 my $artist_with_extras = {
63 artistid => 4, charfield => undef, name => 'mo', rank => 1337,
64 artwork_to_artist => [
65 { artist_id => 4, artwork_cd_id => 1, artwork => { cd_id => 1 } },
66 { artist_id => 4, artwork_cd_id => 2, artwork => { cd_id => 2 } },
70 artist => 4, cdid => 6, title => 'Song of a Foo', genreid => undef, year => 1999, single_track => undef,
72 { attribute => undef, cd => 6, producer => { name => 'riba', producerid => 4 } },
73 { attribute => undef, cd => 6, producer => { name => 'sushi', producerid => 5 } },
76 { cd => 6, position => 1, trackid => 19, title => 'Foo Me Baby One More Time', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
77 { cd => 6, position => 2, trackid => 20, title => 'Foo Me Baby One More Time II', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
78 { cd => 6, position => 3, trackid => 21, title => 'Foo Me Baby One More Time III', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
79 { cd => 6, position => 4, trackid => 22, title => 'Foo Me Baby One More Time IV', last_updated_on => undef, last_updated_at => undef, cd_single => {
80 single_track => 22, artist => 1, cdid => 7, title => 'MO! Single', genreid => undef, year => 2021, tracks => [
81 { cd => 7, position => 1, title => 'singled out', trackid => '23', last_updated_at => undef, last_updated_on => undef },
82 { cd => 7, position => 2, title => 'still alone', trackid => '24', last_updated_at => undef, last_updated_on => undef },
88 artist => 4, cdid => 8, title => 'Song of a Foo II', genreid => undef, year => 2002, single_track => undef,
90 { attribute => undef, cd => 8, producer => { name => 'riba', producerid => 4 } },
91 { attribute => undef, cd => 8, producer => { name => 'sushi', producerid => 5 } },
94 { cd => 8, position => 1, trackid => 25, title => 'Quit Playing Games With My Heart', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
95 { cd => 8, position => 2, trackid => 26, title => 'Bar Foo', last_updated_on => undef, last_updated_at => undef, cd_single => undef },
96 { cd => 8, position => 3, trackid => 27, title => 'Foo Bar', last_updated_on => undef, last_updated_at => undef, cd_single => {
97 single_track => 27, artist => 2, cdid => 9, title => 'MO! Single', genreid => undef, year => 2020, tracks => [
98 { cd => 9, position => 1, title => 'singled out', trackid => '28', last_updated_at => undef, last_updated_on => undef },
99 { cd => 9, position => 2, title => 'still alone', trackid => '29', last_updated_at => undef, last_updated_on => undef },
107 my $art_rs = $schema->resultset('Artist')->search({ 'me.artistid' => 4 });
110 my $art_rs_prefetch = $art_rs->search({}, {
111 order_by => [qw/tracks.position tracks.trackid producer.producerid tracks_2.trackid artwork.cd_id/],
112 result_class => 'DBIx::Class::ResultClass::HashRefInflator',
116 { tracks => { cd_single => 'tracks' } },
117 { cd_to_producer => 'producer' }
120 { artwork_to_artist => 'artwork' }
124 cmp_deeply( $art_rs_prefetch->next, $artist_with_extras );