[Dbix-class] Using { count => 'me.list_id' } with AS hack from the FAQ
John Napiorkowski
jjn1056 at yahoo.com
Tue Oct 10 15:25:41 CEST 2006
--- Ash Berlin <ash at cpan.org> wrote:
> Kevin Old wrote:
> > Hello everyone,
> >
> > I'm trying to use the hack defined in the FAQ for
> "sort my results
> > based on fields I've aliased using as" with the
> following statement
> > which includes a count.
> >
> > $schema->resultset("MyTable")->search(undef, {
> select => [ { count =>
> > 'list_id'} ], as => [ 'list_count' ] });
> >
> > Can someone give me the syntax for this statement
> for the hack? I've
> > tried just about every combination of inserting \'
> as list_count' but
> > nothing seems to work.
> >
> > Any help is greatly appreciated,
> > Kevin
> >
> Define doesn't work.
>
> If you mean $rs->list_count says no such method,
> then yes - it doesn't
> create an accessor for it. to
> $rs->get_column('list_count')
>
> If you mean the query doesn't run, then please tell
> us what error it gives.
>
> Ash
I have something similar where I try to get the max
value for a given column and I also had trouble
getting it to work. The key was to remember that you
have a resultset returned, not a row. Here's how I do
it (It's a catalyst based example but should work
similarly:
my $params = {
select => {MAX => 'updated' },
as => 'updated',
}
my $newest = $c->model('db::members')->search(undef,
$params);
my $updated = newest->single->updated;
You have to remember that search returns a resultset
which you need to iterate against, even if there is
one value.
you could also (probably) do:
my ($first) = $c->model('db::members')->search(undef,
$params)->all;
my $updated = $first->updated;
I just usually stay away from ->all;
--john
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the Dbix-class
mailing list