How can I filter a Perl DBIx recordset with 2 conditions on the same column?
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







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

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






