我正在使用Laravel 5.
我的代码是
DB::table('users')->where('is_active',0)
->where('created_at','<','NOW() - INTERVAL 2 DAY')
->delete();
我想删除超过48小时的未激活用户,但我的代码不起作用。为什么不呢?
答案 0 :(得分:0)
where
方法引用作为第二个参数传递的值,因此您的第二个SQL条件将变为:
created_at < `NOW() - INTERVAL 2 DAY`
而不是:
created_at < NOW() - INTERVAL 2 DAY
这意味着不会匹配任何行。相反,您应该使用whereRaw
来避免引用的值:
DB::table('users')->where('is_active', 0)
->whereRaw('created_at < NOW() - INTERVAL 2 DAY')
->delete();
您可以在Advanced Where Clauses Laravel文档中了解更多相关信息。