in CDBI (+Sweet), i would do something like this:

     Category->has_many(
         messages   => [ 'CollectionMessage' => 'message' ],
         constraint => { 'message.atype'     => 'discussion',  
'message.pubstatus' => 'published' }
     );

     sub latest_message {
         my $self = shift;
         my ($latest) = $self->messages({ order_by => 'pubdate DESC',  
rows => 1 });
         return $latest;
     }


the closest i have come up with in RDBO is:

     Category->meta->setup(
         # ...
         relationships => [
             messages => {
                 type       => 'many to many',
                 map_class  => 'CollectionMessage',
                 map_from   => 'category',
                 map_to     => 'message',
                 query_args => [ 'message.atype' => 'discussion',  
'message.pubstatus' => 'published' ]
             },
             latest_message_map => {
                 type         => 'many to many',
                 map_class    => 'CollectionMessage',
                 map_from     => 'category',
                 map_to       => 'message',
                 query_args   => [ 'message.atype' => 'discussion',  
'message.pubstatus' => 'published' ],
                 manager_args => { sort_by => 'message.pubdate DESC',  
limit => 1 }
             }
         ]
     );

     sub latest_message {
         my $self   = shift;
         my $latest = $self->latest_message_map;
         return $latest && $latest->[0];
     }


i guess i have three questions.

1. is there a way to pull that off with 'one to one' type  
relationship so i can drop the subroutine?

2. or is there a way to tack on extra conditions (or custom ordering)  
to existing relationships, so i can keep the subroutine and drop the  
extra relationship?
(what Class::DBI calls Limiting: http://search.cpan.org/~tmtm/Class- 
DBI-v3.0.16/lib/Class/DBI.pm#Limiting )

3. am i missing some other RDBO magic that would make this easier?

---
michael reece :: software engineer :: [EMAIL PROTECTED]



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Rose-db-object mailing list
Rose-db-object@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rose-db-object

Reply via email to