[Dbix-class] Using { count => 'me.list_id' } with AS hack from the FAQ

Kevin Old kevinold at gmail.com
Tue Oct 10 20:17:02 CEST 2006


Ok, I have what I want working.  I'm doing this:

my $lists = $schema->resultset('BOLTopLists::Lists')->search(
        {
            'toplist.market' => 'charlotte',
        },
        {
            select => [ 'theclass.classification_description',
'count(me.list_uid) as list_count', 'me.list_uid', 'toplist.market',
'theclass.classification_uid'],
            as => [ 'theclass.classification_description',
'list_count', 'list_uid', 'toplist.market',
'theclass.classification_uid'],
            order_by => 'list_count desc',
            group_by => 'list_count',
            join => [qw/ toplist theclass /],
            prefetch => [qw/ toplist theclass /],
        });

In the select, I'm writing out the SQL for the count with the AS in
there so that it works.

The hack at http://search.cpan.org/~danieltwc/DBIx-Class-0.07002/lib/DBIx/Class/Manual/FAQ.pod,
said there was a way to append the AS clause to the sql statement, but
I haven't been able to get it to work.

This, of course doesn't work.  It fails from perl, but it's exactly
what the POD docs say.

select => [ 'theclass.classification_description', { count =>
'me.list_uid' }, \'as list_count', 'me.list_uid', 'toplist.market',
'theclass.classification_uid'],

I've solved my problem by just writing the raw sql.

I'm just wondering if the aggregate functions and the way DBIC allows
them to be created with { count => ''} syntax and made into accessors
will ever be linked to the order_by and group_by clauses?

If not, why have the { count => ''} syntax?

Thanks,
Kevin
-- 
Kevin Old
kevinold at gmail.com



More information about the Dbix-class mailing list