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

Php 如何根据laravel查询生成器或sql中的日期更新表,php,sql,laravel,laravel-query-builder,Php,Sql,Laravel,Laravel Query Builder,我在更新表中的记录时面临问题。我的用户计划表如下所示: 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-

我在更新表中的记录时面临问题。我的用户计划表如下所示:

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
我想将
remaining_images
列更新为
250
,并在30天后更新,请参见下面的示例:

  • 我的第一个记录开始日期是2018年9月22日
  • 当2018年10月22日到来时,我想将Remaing images列更新为
    250
  • 当2018年11月22日再次出现时,列将更新为
    250
    。它将一直工作到所述的
    到期日
  • 同样的行为也适用于其他事务
我想用
sql
query或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)

第一个条件检查当前月份日期是否与开始日期相同,第二个条件检查当前日期是否在开始日期和结束日期之间。您现在需要做的就是为这个查询运行cron作业。

它将在22号的每个月工作?根据开始日期