[CDBI] Group by and AbstractSearch

Michael Peters mpeters at plusthree.com
Fri Oct 21 17:19:49 BST 2005

Brett Sanger wrote:
> On Fri, Oct 21, 2005 at 07:48:00AM -0700, Bill Moseley wrote:
>>>sub area_summary {
>>>  my $self = shift;
>>>  my $sql = SQL::Abstract->new();
>>>  my ($where, @bind) = $sql->where(@_);
>>>  return $self->sql_summarize($where)->select_val(@bind);
>>Doesn't select_val() return just one value?  Seem like in the case
>>above you would define a TEMP column 'Count' and then search as
>>normal with $class->search_summarize()
> After some more doc reading, delving into the code, and some
> experimentation:
> search_summarize() wouldn't let me pass my arbitrary where clauses (it
> accepts data for placeholders, but not string replacement)
> sql_summarize() let's me pass along arbitrary string replacments, but
> then I'm left with a statement handle. I can execute() it to fill my
> placeholders, but then I'm outside my CDBI model.

One of the nicest things about C::DBI (IMO) is that you can not only
step outside of C::DBI to use straight DBI/SQL, but that you can then
step back (in most cases).

> sub area_summary {
>   my $self = shift;
>   my $sql = SQL::Abstract->new();
>   my ($where, @bind) = $sql->where(@_);
>   return $self->sth_to_objects($self->sql_summarize($where), \@bind);
> }
> But again, I'm a little uncomfortable since sth_to_objects() is undocumented
> (but not marked as internal)
> Can someone provide me some info to say if this is the intended course or not?

Well, sth_to_objects() isn't documented by itself, but is is mentioned
in at least one example. I use it all the time, so I hope it's now
officially public :)

Michael Peters
Plus Three, LP

More information about the ClassDBI mailing list