On 02/13/2015 02:12 PM, thilo.fes...@googlemail.com wrote:
... { from => [ { 'me' => 'artist' }, [ { 'tracklĂst' => $track_list_rs->as_query }, { 'me.artistid' => { -ident => 'tracklĂst.artistid' } }, ] ],
(comment unrelated to your original question): Note that the above usage is unsupported (specifying a from structure by hand may or may not work this way). I literally can not tell if there are corner cases with the above or not without studying the source code for good 5 minutes. I understand there is no easy way to specify this stuff on the fly currently, read on for details why there is yet no defined API for that. In any case - make sure you test and comment this part of your code heavily - this *will* stop working in the distant future.
Here I simply want to build a list of tracks per artist and connect it to the artist directly. For prefetching the tracklist, I use '+columns' and 'collapse', because I expected those two not to check for the accessor "tracklist" (but this seemed to be a wrong assumption).
The issue here isn't the accessors, but the relationship between "left and right side". collapse => 1 needs to know a lot of metadata about the 'tracklist' to determine how to properly "fold" it when it sees repetitions of the same data (is it a duplication as a result of another join, or is it just multiple identical titles?). Currently this metadata can only be gleaned via $schema->source('Artist')->related_source('tracklist'). Since there is no such thing you get an exception (I need to improve the text of that).
In essence your best bet is to define a real relationship to "tracklist" with the correct subquery and everything, like in this example: https://github.com/dbsrgits/dbix-class/blob/current/for_cpan_index/t/lib/DBICTest/Schema/CD.pm#L120-L154
If you are interested in the inner logic that collapse => 1 triggers, it can be found in this "double-recursion" function: https://github.com/dbsrgits/dbix-class/blob/current/for_cpan_index/lib/DBIx/Class/ResultSource/RowParser.pm#L149-L398
If this reply isn't sufficient to answer your question - please ask further. _______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk