2

DBIx :: Classを使用していますが、挿入された年の曜日に基づいて行を選択したいと思います。以下は私の質問です:

$rows = $c->model("DB::Test")->search(
{
    "DAYOFYEAR(entry_time)"=>$day_of_year,
});

DAYOFYEAR(entry_time)ただし、DBIx :: Classは列として扱われるため、これは機能しません。とにかく、その値を文字通り使用させることができますか?状況によっては機能するようなスカラーにすることもあり\'DAYOFYEAR(entry_time)'ますが、試してみましたが、機能しません。誰かが私がこれを行うことができる方法を知っていますか?ありがとう!

4

1 に答える 1

4

\とを使用'DAYOFYEAR(entry_time)'することは正しいアプローチであり、FAQの一部です。

【どうすればいいですか】..左側のSQL関数で検索しますか?

比較の左側でSQL関数を使用するには、現在、リテラルSQLを使用する必要があります。

->search( \[ 'YEAR(date_of_birth) = ?', [ plain_value => 1979 ] ] );

注:パーツplain_value内の文字列は、列[ plain_value => 1979 ]の名前と同じであるか(関数の戻り値のタイプが列のタイプと同じである場合はこれを行う)、関数の場合は現在の文字列である必要があります。ダミーの文字列として扱われます(plain_value意図を伝えるために使用するか、それに類似したものを使用することをお勧めします)。この値は現在、特別な列タイプ(BLOB、配列など)を処理する場合にのみ重要ですが、将来変更される可能性があります。

于 2012-08-14T21:05:06.400 に答える