Я промочил ноги в DBIx :: Class & mdash; люблю это до сих пор.
Одна проблема, с которой я сталкиваюсь, заключается в том, что я хочу запрашивать записи, отфильтровывая записи, которые не находятся в определенном диапазоне дат.
Мне потребовалось некоторое время, чтобы выяснить, как сделать совпадение типа <=
вместо совпадения на равенство:
my $start_criteria = ">= $start_date";
my $end_criteria = "<= $end_date";
my $result = $schema->resultset('MyTable')->search(
{
'status_date' => \$start_criteria,
'status_date' => \$end_criteria,
});
Очевидная проблема с этим состоит в том, что, поскольку фильтры находятся в хэше, я перезаписываю значение для "status_date" и ищу только там, где status_date <= $ end_date. SQL, который выполняется, является: </p>
SELECT me.* from MyTable me where status_date <= '9999-12-31'
Я искал CPAN, Google и SO и не смог выяснить, как применить 2 условия к одному столбцу. Вся документация, которую я смог найти, показывает, как фильтровать более 1 столбца, но не 2 условия в одном столбце.
Я уверен, что упускаю что-то очевидное. Может кто-то здесь указать мне?