[Dbix-class] Subselect, max, now()
    Paul Makepeace 
    paulm at paulm.com
       
    Wed Sep 19 00:32:10 GMT 2007
    
    
  
OK, I give up. Could someone please help convert this SQL into DBIx::Class,
  select story.date_time, story.source_uid, story.headline
  from story where story.publication_uid = 23 and date_time = (
    select max(story.date_time)
    from story join publication on story.publication_uid = publication.uid
    where publication.uid = 23 and story.date_time < now());
I sorta managed the subselect but couldn't get it to treat now() as a function,
my @SEARCH_MAX_DATE_TIME_ARGS = (
	join => [qw/story_publication/],
	select => [\'max(me.date_time)'],
	as => [qw/max_date_time/],
);
sub search_max_date_time {
	my ($obj, $search, $args) = @_; $args ||= {};
	$obj->search($search,	{ @SEARCH_MAX_DATE_TIME_ARGS, %$args });
}
Controller:
  my ($max_date_time) :Stashed =
$ds_ro->resultset('Story')->search_max_date_time(
  	{ %$search, 'me.date_time' => { '<' =>  \'now()' }})->next;
  if ($max_date_time) {
	$max_date_time = $max_date_time->get_column('max_date_time');
  }
Thanks! Other random style comments welcome.
P
    
    
More information about the DBIx-Class
mailing list