Я использую учение DBAL 2.5.2 с MySql 5.5
Я создал поле с timestamp
тип и ON UPDATE CURRENT_TIMESTAMP
дополнительно.
Когда я изменяю содержимое из phpMyAdmin, поле обновляется и изменяется на текущую временную метку, но когда я обновляю содержимое из Doctrine / dbal, ничего не происходит. Я имею в виду все работает, кроме on update
,
Я называю обновление с $app['db']->update('mytable', $data, array('my_id' => $id);
Как я могу запустить on update
триггер из доктрины / дбал кода?
редактировать :
Я добавляю этот код, чтобы проверить, пытаюсь ли я изменить дату.
if (isset($data['updated'])) unset($data['updated']);
date
поле с вашим $data
вообще как пустая строка приведет к нулям.Я настроил тестовый проект, он отлично работает:
$connectionParams = ...;
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
$conn->update('user', array('name' => 'X3'), array('name' => 'X2'));
Таблица:
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` text NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Некоторые тестовые данные:
INSERT INTO `user` (`id`, `name`, `date`) VALUES
(1, 'A', '0000-00-00 00:00:00'),
(2, 'B', '0000-00-00 00:00:00'),
(3, 'C', '0000-00-00 00:00:00'),
(4, 'F', '0000-00-00 00:00:00'),
(10, 'X2', '2015-11-10 14:47:08');
Можете ли вы провести повторное тестирование и убедиться, что все параметры указаны правильно в поле даты?
Других решений пока нет …