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号的每个月工作?根据开始日期