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;
こうか。