我将doctrine DBAL2.5.2与MySql 5.5结合使用
我已经创建了一个timestamp
类型的字段和一个ON UPDATE CURRENT_TIMESTAMP
extra。
当我更改phpMyAdmin中的内容时,字段会更新并更改为当前时间戳,但是当我更新Doctrine/dbal中的内容时,什么也不会发生。我的意思是,除了on update
之外,所有的东西都可以工作。
我使用$app['db']->update('mytable', $data, array('my_id' => $id);
调用更新
如何从trigger /dbal代码运行on update
触发器?
编辑:
我添加了这段代码来检查我是否尝试更改日期。
if (isset($data['updated'])) unset($data['updated']);
发布于 2015-11-10 22:53:42
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');
您能否重新测试并确保日期字段中的所有参数都是正确的?
https://stackoverflow.com/questions/33396260
复制相似问题