Как обновить таблицу в зависимости от дат в построителе запросов laravel или в sql - PullRequest
0 голосов
/ 22 октября 2018

У меня проблема с обновлением записей в таблице.Моя таблица user_plans выглядит следующим образом:

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 дней. См. Пример ниже:

  • Моя 1-я дата начала записи 22 сентября 2018
  • Когда наступит 22 октября 2018 , я хочу обновить столбец с новыми изображениями до 250
  • Когда 22 ноября 2018 года придет снова, столбец обновится до 250.он будет работать до колонки expiry_date, как уже упоминалось.
  • И то же поведение будет работать и для других транзакций.

Я хочу сделать это с помощью sql построителя запросов или запросов laravel.

Я действительно сделалс php с получением всех планов и обновлением по одному.Но я думаю, что это не сработает, если мои транзакции исчисляются сотнями тысяч или миллионами.

Так что я хочу запускать с использованием SQL-запроса.Я не уверен, может быть, это будет сделано с помощью операторов Case.

1 Ответ

0 голосов
/ 22 октября 2018

Я не проверял, но должно быть что-то вроде этого:

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, второе условие проверяет, находится ли текущая дата междуваши начальные и конечные даты.Все, что вам нужно сделать сейчас, это запустить задание cron для этого запроса.

...