如何根据 laravel 查询生成器或 sql 中的日期更新 table

How to update the table depending upon the dates in laravel query builder or sql

我在更新 table 中的记录时遇到问题。我的 user_plans table 如下所示:

id  remaning_images transaction_id  user_id   start_date      expiry_date   status  
 1  100               100             1       2018-09-22      2019-09-22    Active
 2  50                101             2       2018-10-20      2019-10-20    Active
 3  50                102             3       2018-10-21      2019-10-21    Active
 4  50                103             4       2018-10-19      2019-10-19    Active

我想将 remaning_images 列更新为 250,它将在 30 天完成后更新 请参见下面的示例:

我想用 sql 查询或 laravel 查询生成器来做这件事。

我实际上已经 php 完成了获取所有计划并一一更新的工作。但是我认为如果我的交易量是几十万或几百万,那是行不通的。

所以我想 运行 使用 sql 查询。我不确定它是否会使用 Case 语句完成。

我没测试过,不过应该是这样的:

UPDATE user_plans 
SET remaning_images = 250 
WHERE DATE_FORMAT(start_date,'%d') = DATE_FORMAT(NOW(), '%d') 
AND (NOW() BETWEEN start_date AND expiry_date)

第一个 WHERE 条件检查当前月份的日期是否与 start_date 的日期相同,第二个条件检查当前日期是否在您的 start_date 和 end_date 之间。您现在需要做的就是 运行 此查询的 cron 作业。