删除超过 60 分钟的 Elequent 记录

Bar*_*127 5 database eloquent laravel-4

如何删除数据库中created_at或updated_at字段早于60分钟的所有Eloquent记录?(或示例中的任意时间)

编辑:按照 @Alexxus 建议发布解决方案作为答案

Mik*_*ron 7

Laravel 有一个内置的 Carbon 日期类,可以为您处理所有时区问题。

例子:

$date  = Carbon::now()->subMinutes( 60 );
MyModel::where( 'updated_at', '<=', $date )->delete();
Run Code Online (Sandbox Code Playgroud)


Bar*_*127 4

已解决-> 与 ceejayoz 他的链接

  • 创建一个日期对象并减去时间量。
  • 将日期对象转换为字符串以匹配 Eloquent 格式
  • 将格式化字符串与 Updated_at 进行比较

我正在使用以下代码:

$date = new DateTime;
$date->modify('-60 minutes');
$formatted = $date->format('Y-m-d H:i:s');
MyModel::where('updated_at', '<=', $formatted)->delete();
Run Code Online (Sandbox Code Playgroud)

谢谢塞贾约兹!