Уменьшать поле на MySQL каждый день?

То, в чем я нуждаюсь, состоит в том, чтобы уменьшать стоимость, которая хранится в базе данных.

А именно у меня есть таблица с именем запросы, у которого есть поле, что названный diasconsumidos в этой таблице существуют много реестров и поле diascosumidos, хранит int.

То, что должно делать веб-страницу, является каждым днем быть diminuyendo стоимость поля diasconsumidos всех реестров, которое находит в таблице запросы.

Я думал о том, чтобы создать рукописный шрифт в python или php, что сделал эту работу, но хочу знать, существуют ли форма, из которой сам mysql может делать это, или другие выборы.

Нужно упоминать о том, что я нахожусь в LARAVEL.

0
задан 06.05.2017, 00:06
2 ответа

В MySQL существует проектировщик событий (Эвент Шедулер), который позволяет тебе программировать ejecuci¦n команд SQL peri¦dicamente, сходный с cron, но внутри того же MySQL.

, Чтобы знать, если estÃ: данный возможность проектировщик ты можешь проверять стоимость переменной системы event_scheduler с:

SHOW GLOBAL VARIABLES LIKE `event_scheduler%`;

или

SELECT @@GLOBAL.event_scheduler;
  • , Если стоимости ON проектировщик estÃ: уполномоченный и активный.
  • , Если стоимости OFF проектировщик estÃ: казначей, но estÃ: бездеятельный. Возможно включать меняя стоимость глобальной переменной в ON: SET @@GLOBAL.event_scheduler = 1;, всякий раз когда у тебя были необходимые привилегии.
  • , Если стоимости DISABLED проектировщик не estÃ: казначей и не возможно включать.

В случае, если esté включенный проектировщик, ты можешь создавать событие, которое выполняло бы все, d¦-схвати их начиная с ноля часов 6 апреля 2017 следующего способа:

DELIMITER $

CREATE EVENT IF NOT EXISTS `MiEvento`
ON SCHEDULE EVERY 1 DAY STARTS '2017-05-06 00:00:00'
COMMENT 'La descripción de mi evento'
DO
BEGIN
    -- El código que se quiere ejecutar
    update `solicitudes` set
        `diasconsumidos` = `diasconsumidos` - 1
    where
        `diasconsumidos` > 0;
END$

DELIMITER ;

важен упоминать, что в configuraci¦n стартера MySQL нужно давать возможность проектировщику (с директивным органом event_scheduler=1 в my.cnf), так как проектировщик estÃ: выведенный из строя из-за omisi¦n.

1
ответ дан 24.11.2019, 09:27

Хорошие, не ser¦ - в большее количество fÃ: cil...

Вместо того, чтобы обновлять твой реестр весь, d¦-схвати их, ты можешь добавлять так называемое поле даты (например) ultima_actualizacion. Идея состоит в том, чтобы у тебя не было задания, которое делало бы это каждым d¦ - в, но каждый раз, когда ты консультировался или соглашался на этот данные, считал d¦-схвати их прошедшие с последнего actualizaci¦n и вновь обновлял это.

Тогда в твоем migraci¦n ты добавляешь:

$table->date('updated_at');

В в c¦digo ir¦ - в небольшое количество as¦-:

public function getSolicitud (Request $request){
    $solicitud = Solicitud::select('*', 'datediff(now(), solicitud.updated_at) as diferencia')
        ->where('id', $request->input('id'));

    $solicitud->diascosumidos += $solicitud->diferencia;
    // hacer otras operaciones

    return response()->json(array('completed' => $solicitud->save());
}

Сейчас, если ты хочешь изменить все поля таблицы из-за sql, ты можешь использовать что-то как:

UPDATE solicitud SET diasconsumidos = diasconsumidos + datediff(now(), solicitud.updated_at);
0
ответ дан 24.11.2019, 09:27
  • 1
    Хороший уже habí в подумавший об этом, но он не применяется в моем случае, так как предлагается служба и это должно быть выполненным так не было положено в страницу. тогда исследуя будет необходимо использовать с laravel Commands и Schedule –  FuriosoJack 06.05.2017, 00:08
  • 2
    @FuriosoJack, Когда он попробует класть это стоившие как está в этом примере, я не вижу каковым это проблема. Если $solicitud->diascosumidos после actualizació n он больше, чем предел, просто ты это пересылаешь pá gina, который ты хочешь, показывая ему, что dí эксперт они закончились. В самом деле podrí схвати делать это с middleware , тогда ты это выдаешь в путях . Если ты объясняешь твой законченный случай в вопросе podrí an помогать тебе больше :P –  UselesssCat 06.05.2017, 00:20