How can I filter a Perl DBIx recordset with 2 conditions on the same column?

Posted by BrianH on Stack Overflow See other posts from Stack Overflow or by BrianH
Published on 2010-03-11T16:49:23Z Indexed on 2010/03/11 17:39 UTC
Read the original article Hit count: 351

Filed under:
|

I'm getting my feet wet in DBIx::Class - loving it so far.

One problem I am running into is that I want to query records, filtering out records that aren't in a certain date range.

It took me a while to find out how to do a "<=" type of match instead of an equality match:

my $start_criteria = ">= $start_date";
my $end_criteria = "<= $end_date";
my $result   = $schema->resultset('MyTable')->search(
  {
    'status_date' => \$start_criteria,
    'status_date' => \$end_criteria,
  });

The obvious problem with this is that since the filters are in a hash, I am overwriting the value for "status_date", and am only searching where the status_date <= $end_date. The SQL that gets executed is:

SELECT me.* from MyTable me where status_date <= '9999-12-31'

I've searched CPAN, Google and SO and haven't been able to figure out how to apply 2 conditions to the same column. All documentation I've been able to find shows how to filter on more than 1 column, but not 2 conditions on the same column.

I'm sure I'm missing something obvious - hoping someone here can point it out to me?

Thanks in advance!

Brian

© Stack Overflow or respective owner

Related posts about perl

Related posts about dbixclass