如何根据 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 天完成后更新 请参见下面的示例:
- 我的第一个记录开始日期是 2018 年 9 月 22 日
- 2018 年 10 月 22 日 到来时,我想将 remanaing images 列更新为
250
- 2018 年 11 月 22 日 时,专栏将更新为
250
。如前所述,它将一直工作到 expiry_date
列。
- 同样的行为也适用于其他交易。
我想用 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 作业。
我在更新 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 天完成后更新 请参见下面的示例:
- 我的第一个记录开始日期是 2018 年 9 月 22 日
- 2018 年 10 月 22 日 到来时,我想将 remanaing images 列更新为
250
- 2018 年 11 月 22 日 时,专栏将更新为
250
。如前所述,它将一直工作到expiry_date
列。 - 同样的行为也适用于其他交易。
我想用 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 作业。