my $query = 'select event.* from event where sid = 1 order by timestamp desc, event.sid desc, event.cid desc';
my $sth = MyClass::db_Main->prepare( $query );
$sth->execute;
my @events;
#
# Fetch and construct each object
#
while (my $row = $sth->fetchrow_hashref()) {
push(@events, MyClass::Event->construct($row));
}
#
# Process these objects
#
foreach my $event (@events) {
my $signature = $event->signature;
print "Signature Name=".$signature->sig_name."\n";
## whatever ....
}
####
package MyClass;
use strict;
use warnings;
use DBI;
use base qw(Class::DBI::Pg);
{
__PACKAGE__->connection("dbi:Pg:dbname=mydb", 'some-user', 'some-password',
{ RaiseError => 1, AutoCommit => 1 });
}
########################################################
package MyClass::Event;
use base qw/MyClass/;
_PACKAGE__->set_up_table('event');
__PACKAGE__->has_a(signature => 'MyClass::Signature');
########################################################
package MyClass::Signature;
use base qw/MyClass/;
_PACKAGE__->set_up_table('signature');
__PACKAGE__->has_many(events => 'MyClass::Event' => signature);
# ....
####
my $page_size = 24;
my $page_num = 3;
my $offset = ($page_num - 1) * $page_size;
my $query = "select * from event where sid = 1 order by timestamp desc, event.sid desc, event.cid desc OFFSET $offset LIMIT $page_size";