DBICの検索条件にMySQLの関数使う

あーわからん!とおもってググったら
search_literal - Hatena::Diary::Neko::kak 500 Internal Server Error
を見つけた。確かにsearch_literalを使うとうまく行く。
でも今回はINTERVAL 7 DAYとか固定の値を使うからSQLインジェクション関係ないからふつーのsearchでもやりたいので、

$self->search({
    id => $id,
    createtime => {'>' => \'NOW() - INTERVAL 7 DAY'},
})->first;

としたら

SELECT me.id, me.email, me.password, me.name, me.active, me.updatetime, me.createtime FROM user me WHERE ( createtime > ? AND id = ? ): 'SCALAR(0xb00ff5c)', '1'

ってなった!
何が悪いのかわからないのでもう放置。もやもやもやもや。

    • -

自己解決。

$self->search({
    'me.id' => $id,
    'me.createtime' => \'> NOW() - INTERVAL 7 DAY',
})->first;

こうか。