2013-03-19 4 views
1

J'essaie de retourner les anniversaires d'aujourd'hui. C'est ce que j'ai en ce moment, qui fonctionne, mais je dois saisir le mois et le jour pour entrer dans la déclaration. Je pensais que je pourrais peut-être les récupérer à l'heure locale, mais ça n'a pas marché. Toute suggestion serait appréciée.DBIx :: Class et Recherche

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

Cela ne fonctionne pas avec '$ day' et' $ month' car ils ne contiennent pas les zéros en tête que les dates de votre base de données incluent. La meilleure solution (comme vous semblez l'avoir déjà fait) est d'utiliser Time :: Piece. –

+0

Merci pour l'explication, je n'étais même pas au courant de Time :: Piece jusqu'à hier. À votre santé. –

Répondre

2

J'ai fini par faire quelque chose comme ça.

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' 
    } 
); 
Questions connexes