使调度程序删除在laravel中已存在15天的通知吗?

时间:2018-07-05 15:59:53

标签: php laravel laravel-5 php-carbon

因此,我有一个通知表,其中包含一个created_at字段,可用于删除距现在15天的通知。

我的调度程序代码:

$schedule->call(function () {

$now = \Carbon\Carbon::now();


DB::table('notifications')
             ->where($now->diffInDays('created_at'), '>', 15)
             ->delete();

    })->daily();
}

但这会导致错误:

DateTime::__construct(): Failed to parse time string (created_at) at position 0 (c): The timezone could not be foun
  d in the database

我该如何解决?还有仅使用php的其他方法吗?

1 个答案:

答案 0 :(得分:1)

您得到的错误是因为您试图获取Carbon对象与字符串('created_at')之间的差异。您可以通过更改where子句来解决此问题

->where('created_at', '<', $now->subDays(15))

或者您也可以编写原始查询。