Laravel SoftDelete查询不起作用

时间:2016-02-10 17:10:27

标签: laravel query-builder

我正在使用Laravel 5.

我的代码是

DB::table('users')->where('is_active',0)
                  ->where('created_at','<','NOW() - INTERVAL 2 DAY')
                  ->delete();

我想删除超过48小时的未激活用户,但我的代码不起作用。为什么不呢?

1 个答案:

答案 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文档中了解更多相关信息。