ОБНОВЛЕНИЕ MySQL с доктриной DBAL

Я использую учение 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']);

0

Решение

  1. Убедитесь, что вы не отправляете date поле с вашим $data вообще как пустая строка приведет к нулям.
  2. Убедитесь, что вы действительно меняете данные, иначе столбец метки времени также не будет обновляться.

Я настроил тестовый проект, он отлично работает:

$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');

Можете ли вы провести повторное тестирование и убедиться, что все параметры указаны правильно в поле даты?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]