2013-03-19 4 views
1

Я пытаюсь вернуть сегодняшние дни рождения. Это то, что у меня есть сейчас, которое работает, но мне нужно захватить месяц и день, чтобы внести свой вклад в утверждение. Я подумал, что, может быть, я смогу схватить их с местного времени, но это не сработало. Мы ценим любые предложения.DBIx :: Класс и поиск

sub author_birth { 
    my ($self) = @_; 
    my ($day,$month) = (localtime())[3..4]; 
    my $author_result = $self->search_like(
     { 
      birth => '%03-20' 
     }, 
     { 
      select => [ 
       'id', 
       'complete_name', 
      ], 

      #result_class => 'DBIx::Class::ResultClass::HashRefInflator' 
     } 
    ); 

    my @author_ids =(); 
    while (my $row = $author_result->next) { 
     push @author_ids, $row->id; 
    } 

    return $self->get_author_info_by_id(\@author_ids); 

} 
+0

Он не работает с '$ day' и' $ month', потому что у них нет ведущих нулей, которые включают даты в вашей базе данных. Лучшее решение (как вы, похоже, уже разработали) - использовать Time :: Piece. –

+0

Спасибо за объяснение, я даже не знал о Time :: Piece до вчерашнего дня. Приветствия. –

ответ

2

В итоге я сделал что-то подобное.

my ($self) = @_; 
my $conc = '%'; 
my $datetime = Time::Piece->new->strftime('%m-%d'); 
my $date = $conc . $datetime; 
my $author_result = $self->search_like(
    { 
     birth => $date, 
    }, 
    { 
     select => [ 
      'id', 
      'complete_name', 
     ], 

     #result_class => 'DBIx::Class::ResultClass::HashRefInflator' 
    } 
);