【问题标题】:MySQL - Deleting records that are older than 4 weeksMySQL - 删除超过 4 周的记录
【发布时间】:2019-01-17 08:29:01
【问题描述】:

我想知道如何从表中删除超过 4 周的记录。我已经制作了这个脚本,但它似乎不起作用,它只是从表中删除了每条记录。我认为问题在于操作数的语法错误。

$test = $db->deleteFrom('mtr_position')->where(array('year' < $year || ('year' == $year && 'week' < $week)))->execute();

任何想法如何解决这个问题?

提前谢谢你。

【问题讨论】:

  • 我建议分享更多代码
  • 如果是我,我会从原始 sql 开始。然后,一旦我有一个有效的查询,我会在 laravel 中重写它。
  • 您的表架构是什么样的?
  • 这看起来不像是有效的代码...

标签: php mysql laravel


【解决方案1】:

使用 Eloquent 和 Carbon

假设您的模型名称是 Flight。

删除 4 周或更早的记录。

$deletedRows = App\Flight::where('created_at', '<', Carbon::now()->subWeeks(4))->delete();

如果您想通过指定天数来更具体地了解日期,请使用subDays() 而不是subWeeks()

阅读更多关于Carbon加减法here

【讨论】:

  • 为什么要在 PHP 中为数据库记录选择进行日期计算?
  • @symcbean 我认为使用 Eloquent 或 Query Builder 是在使用 Laravel 框架时执行数据库操作的推荐方法。而且我相信它非常有用,以防我们将来需要切换到新的数据库驱动程序,而无需对我们的代码进行任何更改。
  • 这与我提出的问题无关。
  • @symcbean 如果您能在 MySQL 中提出解决方法,那就太好了。谢谢。
  • DELETE FROM atable WHERE adate&lt;NOW()-INTERVAL 28 DAY
猜你喜欢
  • 1970-01-01
  • 2019-08-27
  • 2012-06-30
  • 2016-06-03
  • 2021-10-04
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 2022-01-16
相关资源
最近更新 更多