私はDBIx::Classに足を踏み入れています — これまでのところ気に入っています。
私が直面している問題の 1 つは、特定の日付範囲にないレコードを除外して、レコードをクエリしたいということです。
<=
等価一致の代わりに特定の種類の一致を行う方法を見つけるのにしばらく時間がかかりました。
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 は次のとおりです。
SELECT me.* from MyTable me where status_date <= '9999-12-31'
CPAN、Google、および SO を検索しましたが、同じ列に 2 つの条件を適用する方法がわかりませんでした。私が見つけたすべてのドキュメントは、複数の列でフィルタリングする方法を示していますが、同じ列で2つの条件は示していません。
明らかな何かが欠けていると確信しています。ここで誰かが私にそれを指摘できますか?