То, в чем я нуждаюсь, состоит в том, чтобы уменьшать стоимость, которая хранится в базе данных.
А именно у меня есть таблица с именем запросы, у которого есть поле, что названный diasconsumidos в этой таблице существуют много реестров и поле diascosumidos, хранит int.
То, что должно делать веб-страницу, является каждым днем быть diminuyendo стоимость поля diasconsumidos всех реестров, которое находит в таблице запросы.
Я думал о том, чтобы создать рукописный шрифт в python или php, что сделал эту работу, но хочу знать, существуют ли форма, из которой сам mysql может делать это, или другие выборы.
Нужно упоминать о том, что я нахожусь в LARAVEL.
В 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.
Хорошие, не 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);
$solicitud->diascosumidos
после actualizació n он больше, чем предел, просто ты это пересылаешь pá gina, который ты хочешь, показывая ему, что dí эксперт они закончились. В самом деле podrí схвати делать это с middleware , тогда ты это выдаешь в путях . Если ты объясняешь твой законченный случай в вопросе podrí an помогать тебе больше :P
– UselesssCat
06.05.2017, 00:20